핵심은 의존성 주입 (Dependency Injection)
: 디자인 패턴으로 Ioc(Inversion of Control)을 구현하는 방법 중 하나!
<aside>
❓ 의존이란
Todo 목록을 관리하는 TodoService 객체가 있고, 이 객체는 FileTodoPresistence라는 파일에 Todo 목록을 저장할 수 있도록 도와주는 객체를 사용할 때, Todo Service는 FileTodoPersistence 객체 없이는 재 기능을 수행할 수 없다 → Todo Service 는 FileTodoPersistence에 의존
한다!
</aside>
<aside>
❓ 의존성 주입
클래스가 의존하는 다른 클래스들을 외부
에서 주입시킨다…
한 오브젝트가 의존하는 오브젝트를 생성하는 것이 아니라 외부에서 넘겨받음
(자주 바꾸게 되거나 할 때 이점을 가짐)
방법
단위 테스트에서 가짜 프로젝트 (Mock) 를 주입할 때도 유용
</aside>
스프링 프레임워크는 의존성 주입 컨테이너의 도움을 받아 오브젝트 생성과 관리를 효율적으로 하게 한다
어노테이션
이나 XML
, 또는 자바
코드를 이용해서 오브젝트(Bean) 사이의 의존성을 명시할 수 있다…
어플리케이션 실행 시 스프링 프레임워크의 IoC 컨테이너라는 오브젝트가 우리가 등록한 오브젝트를 생성 및 관리해준다.
new 키워드를 이용해 일일이 생성하는 직업 필요없고, IoC 컨테이너 오브젝트가 대신 해줌
<aside> ❓ 스프링 부트 Stand-Alone( 홀로 실행 가능한 앱) 프로덕션급의 스프링 기반 애플리케이션 쉽게 구동 가능
Stand-Alone이 아니라면: 톰캣과 같이 웹 서버/서블릿 컨테이너가 필요한 경우…
스프링부트는 임베디드 톰켓이나 제티같은 웹 서버를 애플리케이션 실행 시 함께 실행 및 설정해줌 ⇒ 어플리케이션 실행 자체가 웹 서버
</aside>
서블릿 : 클라이언트 요청을 돌려줄 때 동적인 데이터를 반환할 수 있게 도와주는 자바 소프트웨어 컴포넌트!
Http 요청이 서버로 전달되면 웹서버는 받은 요청을 해석해 해당되는 서블릿 클래스를 실행
HttpServlet을 상속하는 서브클래스 만들고 doGet(…) 매서드를 구현해야한다!
여기서