[Spring](1) 스프링을 이용한 쇼핑몰 만들기_환경설정

lombok 설정

lombok-1.18.16.jar 버전을 메이븐 리포지토리를 통해 추가해주었다

Lombok을 사용하면 Java 개발시 자주 사용하는 getter / setter, toString(), 생성자 등을 자동으로 생성해주므로 약간의 코드만으로 필요한 클래스를 설계할 때 편리합니다


Java 버전 변경 (1.6 -> 1.8)


Java 버전을 1.8로 맞춰줘야 아래 3개의 클래스들이 상속/구현할 클래스/인터페이스들이 가져와집니다

  • WebConfig.java (AbstractAnnotationConfigDispatcherServletInitializer 클래스 상속)
  • RootConfig.java
  • ServletConfig.java (WebMvcConfigurer 인터페이스 구현)

컴파일 관련 버전 변경


XML파일 삭제

현재 webapp에 web.xml과 spring 폴더를 삭제한 상태이다.
web.xml을 삭제하면 pom.xml에 에러가 발생하는데 기존에 사용하던 웹 프로젝트들이 기본적으로 web.xml을 사용하는 것을 기본 설정했기 때문이다
이를 해결하기 위해 해당 사진의 플러그인을 추가해줍니다

여기까지 모두 설정을 완료하였다면 Maven Update를 실행합니다


팀 프로젝트에서는 XML기반으로 스프링 설정을 했었는데, 이번에는 XML과 별개로 JAVA를 이용하는 설정을 통해서 해보기로 했다
글 작성 이전에 Spring Project 내에 있는 Spring Folder에 servlet-context.xml, root-context.xml, web.xml 파일을 삭제했습니다
삭제 전에 home.jsp가 잘작동되었던것을 확인했었는데, 삭제 후에는 404 에러가 발생했습니다

이를 해결하기 위해선 삭제한 XML 파일들을 대체할 수 있게 몇가지 설정을 해주어야합니다


RootConfig 생성

RootConfig 파일에 @Configuration 어노테이션을 선언
(기존 XML 방식의 root-context.xml 파일의 역할을 합니다)


ServletConfig 생성

(기존 XML 방식의 Servlet-context.xml 파일의 역할을 합니다)

@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/");
	}
	
}

WebConfig 생성

XML을 사용하지 않는 경우 이 역할을 대신하는 클래스를 작성해서 처리해야한다
(기존 XML 방식의 web.xml 파일의 역할을 합니다)
config 패키지에 WebConfig Class를 생성하고 AbstractAnnotationConfigDispatcherServletInitializer 라는 추상클래스를 상속합니다

위 추상 클래스를 상속하면 3개의 추상메소드가 자동으로 오버라이드 되는데 getRootConfig() 클래스는 삭제한 spring 폴더 내에 있던 'root-context.xml'을 대신하는 클래스를 지정하게 됩니다

이것은 RootConfig, ServletConfig 클래스를 사용하므로 반환값을 아래와 같이 변경해주어야 합니다

@Override
	protected Class<?>[] getRootConfigClasses() {
		// TODO Auto-generated method stub
		return new Class[] {RootConfig.class};  << 수정전 return null;
	}

	@Override
	protected Class<?>[] getServletConfigClasses() {
		// TODO Auto-generated method stub
		return new Class[] {ServletConfig.class};  << 수정전 return null;
	}

	@Override
	protected String[] getServletMappings() {
		// TODO Auto-generated method stub
		return new String[] {"/"};  << 수정전 return null;
	}


이로서 xml 없이 Java 설정만을 통해 404 에러를 해결하였다

좋은 웹페이지 즐겨찾기