Open WonYong-Jang opened 5 years ago
1) 기존 root-context.xml , servlet-context.xml, web.xml 을 삭제
2) 아래와 같이 config 패키지에 해당 파일 생성
3) RootConfig 는 root-conext.xml 같음 @ComponentScan을 통해 설정 파일이라는 것을 알려줌 / xml 에서 컴포넌트 스캔 부분은 어노테이션으로 대체 @ComponentScan 을 통해 해당 패키지의 @Component 들을 Bean 객체로 등록 가능
@Configuration
@ComponentScan(basePackages = {"org.zerock.sample"})
public class RootConfig {
}
4) WebConfig
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer{
@Override
protected Class<?>[] getRootConfigClasses() {
return new Class[] {RootConfig.class};
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class[] {ServletConfig.class};
}
@Override
protected String[] getServletMappings() {
return new String[] {"/"};
}
}
5) ServletConfig
@EnableWebMvc
@ComponentScan(basePackages = {"org.zerock.controller"})
public class ServletConfig implements WebMvcConfigurer {
@Override
public void configureViewResolvers(ViewResolverRegistry registry) {
InternalResourceViewResolver bean = new InternalResourceViewResolver();
bean.setViewClass(JstlView.class);
bean.setPrefix("/WEB-INF/views/");
bean.setSuffix(".jsp");
registry.viewResolver(bean);
}
@Override
public void addResourceHandlers(ResourceHandlerRegistry registry){
registry.addResourceHandler("/resources/**").addResourceLocations("/resources/");
}
}
gradle
2 과 같이 gradle 설정
log4j
파일 구조
src/main/java : 실제로 작성되는 스프링 코드의 경로 src/main/resources : 실행할 때 참고하는 기본 경로 (설정 파일) src/test/java : test용 코드 webapp/WEB-INF/spring/appServlet/servlet-context.xml : 웹 과 관련된 스프링 설정 파일
servlet-conext.xml
mvc:annotation-driven ==> 여러 annotation 설정을 한번에 하기 위함
component-scan 사용
컨트롤러가 리턴한 논리적 뷰 이름을 보여줄 jsp로 매핑 ==> InternalResourceViewResolver ( prefix와 suffix)
web.xml
프로젝트 구동은 web.xml 에서 시작하여 root-context 경로가 설정되어 있음!
root-context.xml
1) 스프링이 시작되면 먼저 스프링이 사용하는 메모리 영역을 만들게 되는데 이를 컨텍스트라 함 (스프링에서는 ApplicationContext라는 이름의 객체가 만들어짐) 2) 스프링은 자신이 객체를 생성하고 관리해야 하는 객체들에 대한 설정이 필요(root-context.xml) 3) root-context.xml 에 설정된 을 통해 org.zerock.sample 패키지를 스캔
4) @Component 라는 어노테이션이 존재하는 클래스의 인스턴스를 생성
5) Restaurant 객체는 Chef 객체가 필요하다는 @Autuwired 설정이 있으므로, 스프링은 Chef 객체에 주입
참고 : http://blog.naver.com/PostView.nhn?blogId=1ilsang&logNo=221385911861&parentCategoryNo=&categoryNo=&viewDate=&isShowPopularPosts=false&from=postView