1) 스프링이 등장한 배경!!

사용자의 요구가 점점 높아지다 보니까 사이트가 점점 복잡 -> 프로젝트도 복잡
그래서 쉽게 처리하기 위해서 EJB가 등장했다


EJB가 나온이유? 사이트가 복잡해져서!

근데 EJB도 복잡하다!!! EJB하나를 만들려고하면 두개의 인터페이스를 반드시 공부해야한다..! 클래스도 존재해야하고 관리가 너무 복잡하다...테스트도 너무 복잡....
반드시 ~~해라 <<이런게 엄청 많다..



그래서 점차 POJO + 경량 프레임워크

 

pojo : 옛날 자바 객체 형식을 유지하면서 경량(가벼운) 서버가 필요

톰캣은 ejb를 돌릴 수 없다....

웹에서 돌아가는 자바를 만들기 위해서 반드시 필요한 api? 는 서블릿이다...!! 서블릿을 상속받게 되면 얘가 가진 메소드를 반드시 오버라이드 해야한다....환경에 종속적으로 만들어야한다는 것이다.. 근데 특정기술에 종속적이지가 않다는것이다. 내 맘대로 클래스 만들고 내 맘대로 변수 만들고 싶으면 ? -> 이때 pojo

 

스프링2에서는 jar 파일들이 엄청 많은게 하나로 합쳐져 있었는데 그 이후 버전에서는 다나누어놔서 필요한 것만 골라쓰기 가능!!

스프링 3.대부터는 가볍게 하기위해 jar파일을 나눠 놓았다.

스프링은 웹 뿐만아니라 모든 어플리케이션에서 사용가능하다.

경량프레임워크!

 

스프링 프레임워크는 웹, 안드로이드, 다 가능하다..!!

 

Spring | Projects

스프링이 할수있는거 진짜 많다...

 

 

2) 스프링 프레임워크?

 

아파트 뼈대는 거의 비슷하다. 기본적인 틀은 똑같다..여기다가 어떤 자재를 씌우느냐. 페인트는 어떻게 하느냐에 따라 아파트를 구분할 수 있다..!! 

 

기본적인것만 설정해주면 low level 신경안쓰고 business logic 개발에 전념할 수 있다...

만약 ㅇA에서 B를 쓰려면

B b;

b= new B(); 이렇게 해줫어야 하는데

 

이제는 b= new B(); 할 필요가 없다..!! 누가 대신 넣어주는것이다. 

스프링이 미리 만들어서 주는것이다..!! 

스프링이 미리 만들어서 준다!!

의존성 주입!!

 

 

스프링 삼각형

1. pojo : 특정 환경이나 기술에 독립적

 main ->service-> dao 원래 이거 테스트하기 힘드니까 junit으로 테스트하는데 이것도 spring test로 해볼수 있다

 

2. psa : db 관계 없이 적용

3. ioC/di : 제어의 역전 :::::미리 만들어놓고 가져다 쓴다

a b c 클래스가 있을때

a->b->c가 있을때 각각 new B() , new C() ,new D() 이런식으로 정의하고 썼다...

 

근데 필요할때 만드는게 아니라 의존성을 주입해주는것이다. 어디선가 미리 만들어놓고 우리에게 주는것이다.

 

커넥션 풀처럼 말이다...dao는 필요할때마다 tomcat에 미리 만들어둔걸 lookup 한다..(찾는다)

DL: lookup할때 갖다줌 // DI: 그냥 바로 갖다줌

 

 

 

3) 스프링프레임워크 모듈 -> 레고같다...

 

 

레고를 해도 맨 밑에 초록 바닥이 있다..

 

 

그게 바로 spring core이다..

bean factory : 우리가 만드는게 bean객체 인데 그걸 만들어준다..

객체를 공장에서 만들고 거기서 가져다 쓴다!!!

 

 

 

그리고 spring core위에서 필요한 것만 쌓아서 쓴다!!

 

 

**IoC : lookup으로 가져오고

setter

constructor로 의존성 주입

 

DL 컨테이너가 lookup contet를 통해서 필요한 resource나 object를 얻는 방식

DI 이제 lookup도 필요없고 컨테이너의 존재 여부를 알 필요도 없다. setter injection과 constructor inject

 

 

 

 

 

 

4) Container

스프링 콘테이너는 라이프사이클 관리, dependency객체 제공,,

싱글톤 패턴 자동으로 만들어줘서 우리가 할 필요가 없다..

factory도 자동으로 만들어준다..

 

 

spring di container 가 관리하는 객체를 빈이라고 한다... 팩토리 공장이다!! 

 

 

application context= bean+추가기능

 

beanFacotry가 맨 밑에 판이고

applicationcontext는 그위에 레고..!!

 빈 -확장-> context

 

 

 

 

 

 

+ Recent posts