어플리케이션에서 사용되는 객체들은 빈으로 불리며, 스프링 컨테이너에서 이 빈들의 생명주기와 의존성을 관리한다.
Spring은 프레임워크다. 따라서 객체 등의 관리를 개발자가 관리하지 않고, Spring에서 관리한다. 이는 코드의 결합도를 낮추고 유지보수하기 용이하게 해준다. Spring에서는 이를 DI를 통해 구현한다. DI는 외부에서 의존성을 주입한다는 의미로, 빈의 의존성에 따라 Spring 컨테이너가 생성자 혹은 Setter를 통해 적절한 빈을 생성해 할당해준다.
스프링 프레임워크에서 ApplicationContext는 특정한 역할을 하는 인터페이스로 애플리케이션에서 사용할 모든 빈의 생성,초기화,소멸을 관리합니다.이를 통해 객체의 생명주기를 효과적으로 제어할 수 있습니다.또한,애플리케이션 컨텍스트는 빈 간의 의존성을 설정하고 주입하여 코드의 결합도를 낮추고 유연성을 높입니다.
애플리케이션 컨텍스트는 다양한 설정 방법을 지원합니다.XML설정 파일,자바 설정 클래스,어노테이션 등 다양한 방법을 통해 빈을 설정할 수 있습니다.이를 통해 애플리케이션 컨텍스트는 빈을 검색하고,필요한 빈을 주입 받을 수 있는 기능도 제공합니다.
애플리케이션 컨텍스트는 서술한 바와 같이 애플리케이션의 모든 빈과 리소스를 관리하는컨테이너 역할을 하는 스프링의 핵심 요소입니다.빈의 생성,의존관계 주입,이벤트 전달,다국어처리 등 다양한 기능을 통해 애플리케이션의 유연성과 유지보수성을 높이는 역할을 합니다. 스프링 애플리케이션의 중심에서 모든 구성 요소를 연결하고 관리하는 중요한 역할을 합니다.
model과 service는 root-context, controller는 servelt-context에서 component-scan을 처리하는 것이 좋다. model과 service는 요청 뿐만 아니라 테스트 코드에서도 사용할 수 있기때문에 일반적인 자원으로 취급하는 것이 좋고, controller는 요청 처리 외에는 잘 사용하지 않기 때문이다.
Spring에서 Run하기 위해서는 Project를 통해서 Run을 진행해야한다. jsp등에서 Run을 진행하면 web.xml을 통하지 않아 DispatcherServlet에 접근하지 못한다.
DispatcherServlet : web.xml에 선언되어있음, 기본값으로 spring/appServlet/servlet-context.xml을 설정파일로 갖는다. 여기서 component-scan이 이루어짐
ViewResolver : servlet-content.xml에 선언되어있음, 기본값으로 prefix는 /WEB-INF/views/, suffix는 .jsp로 되어있다.