spring (10) 썸네일형 리스트형 스프링 컨테이너의 관계 1. 톰캣 서버를 구동하면 web.xml 파일을 로딩하여 서블릿 컨테이너가 구동된다. 2. 서블릿 컨테이너는 web.xml 파일에 등록된 ContextLoaderListener 객체를 생성(pre Loading) 한다. 이때 ContextLoaderListener 객체는 src/main/resources 소스 폴더에 있는 appliccationContext.xml 파일을 로딩하여 스프링 컨테이너를 구동하는데, 이를 'Root 컨테이너'라고 한다. 그리고 이때, Service 구현 클래스나 DAO 객체들이 메모리에 생성된다. 그리고 사용자가 로그인 버튼 ".do" d요청을 서버에 전달하면 서블릿 컨테이너는 DispatcherServlet 객체를 생성하고 3 . DispatcherServlet 객체는 /WE.. 어노테이션 - @Component 를 설정했으면 이제 스프링 설정 파일에 클래스들을 일일이 엘리먼트로 등록할 필요가 없다. @Component만 클래스 선언부 위에 설정하면 끝난다. 예를 들어, LgTV 클래스에 대한 등록을 XML 설정과 어노테이션 설정으로 처리하면 다음과 같다. XML 설정 Annotation 설정 @Component public class LgTV implements TV { public LgTV() { System.out.println("===> LgTv 객체 생성"); } } 당연한 얘기겠지만 여기에서 두 설정 모두 해당 클래스에 기본 생성자가 있어야만 컨테이너가 객체를 생성할 수 있다. 이렇게 설정했다면 클래스의 객체가 메모리에 생성되는 것은 문제 없다. 그러나 클라이언트 프로그램에서 LgTV 객체를 요청할 수.. 의존성 주입 어노테이션 - @Autowired @Autowired는 생성자나 메소드, 멤버변수 위에 모두 사용할 수 있다. 어디에 사용하든 결과는 같지만, 대부분 멤버변수 위에 선언하여 사용한다. 스프링 컨테이너는 멤버변수 위에 붙은 @Autowired를 확인하는 순간 해당 변수의 타입을 체크한다. 그리고 그 타입의 객체가 메모리에 존재하는지를 확인한 후에, 그 객체를 변수에 주입한다. 만약 @Autowired가 붙은 객체가 메모리에 없다면 컨테이너가 NoSuchBeanDefinitionException을 발생시킨다. @Autowired의 기능을 테스트하기 위해서 LgTv 클래스에 다음과 같이 멤버변수를 추가하고 의존관계를 설정한다. package polymorphism; @Component("tv") public class LgTv implemen.. Command 객체 Command 객체는 Controller 메소도 매개변수로 받은 VO(Value Object) 객체라고 보면 된다. InsertBoardController 클래스의 insertBoard() 메소드를 Command 객체를 이용하여 구현한다. @Controller public class InsertBoardController { @RequestMapping(value="/insertBoard.do") public void insertBoard(BoardVO vo) { } } insertBoard() 메소드의 매개변수로 사용자가 입력한 값을 매핑할 BoardVO 클래스를 선언하면, 스프링 컨테이너가 insertBoard() 메소드를 실행할 때 Command 객체를 생성하여 넘겨준다. 그리고 이때 사용자가 입력.. Spring MVC 구조 - (하) Spring MVC 수행 흐름 strtus를 비롯한 대부분의 MVC 프레임워크는비슷한 구조를 가졌다. 따라서 하나의 프레임워크만 잘 이해한다면 다른 프레임워크도 쉽게 이해할 수 있다. 우리는 앞에서 Spring MVC 구조가 전혀 새롭지는 않을 것이다. 그림 5 - 1은 클라이언트의 요청을 시작으로 Spring MVC를 구성하는 각 요소가 어떻게 동자갛는지를 표현했으며, 각 번호에 대한 설명을 아래에 추가했다. 그림의 번호와 설명을 번갈아 가며 확인하기 바란다. 1. 클라이언트로부터 모든 ".do" 요청을 DispatcherServlet이 받는다. 2. DispatcherServlet은 HandlerMapping을 통해 요청을 처리할 Controller를 검색한다. 3. DispatcherServlet은.. 이전 1 2 다음