Spring
java config으로 하는 Spring 셋팅.
gracelove91
2019. 11. 8. 16:27
반응형
설정
pom.xml
.....
<build>
<plugin>
<artifactId>maven-war-plugin</artifactId>
<version>3.2.2</version>
<configuration>
<failOnMissingWebXml>false</failOnMissingWebXml>
</configuration>
</plugin>
.....
- 먼저 web.xml 파일이 없어서 오류가 나지않게
failOnMissingWebXml
의 값을 false로 줍니다.
RootConfig.java
@Configuration
@ComponentScan(basePackages = "com.petcare.web",
excludeFilters = @ComponentScan.Filter({
Controller.class,
RestController.class
}))
@PropertySource(value = "classpath:application.properties")
@MapperScan(basePackages = "com.petcare.web.mapper")
@EnableTransactionManagement
public class RootConfig { ... }
- RootConfig은 xml 설정의 applicationContext.xml 역할을 합니다.
- @ComponentScan 으로 basePackages에 지정된 패키지 이하를 검색해 @Component 붙은 빈들을 등록시켜줍니다. 계층형 구조로 만들기 위해, @Controller,@RestController 어노테이션이 붙은 빈들은 excludeFilters를 이용해 빈등록에서 제외시켜줍니다.
- @PropertySource로는 디비정보 등과 같은 민감한 정보를 보호하기 위해, 따로 properties를 만들고, @Value로 주입시켜줍니다.
- @MapperScan은 마이바티스의 Mapper인터페이스를 검색하기 위해 설정합니다.
- @EnableTransactionManagement는 xml 기반의 설정에서 <tx:annotation-driven> 과 같은 역할을 합니다.
ServletConfig.java
@EnableWebMvc
@ComponentScan(basePackages = "com.petcare.web.controller")
public class ServletConfig implements WebMvcConfigurer {...}
- xml설정에서 보통 servlet-context.xml로 쓰는 스프링컨텍스트의 역할과 같습니다.
- @EnableWebMvc를 사용하여 WebMvcConfigurationSupport 의 도움을 받습니다. 해당 클래스가 해주는 일은 문서를 통해 살펴보세요.
https://docs.spring.io/spring/docs/5.1.6.RELEASE/javadoc-api/org/springframework/web/servlet/config/annotation/WebMvcConfigurationSupport.html - @ComponentScan(...) 을 이용해 controller 패키지 안에 있는 빈들을 등록시켜줍니다.
- 따라서 @Controller 빈들은 반드시 controller 패키지 안에 집어넣어야합니다. 그렇지않으면 빈으로 등록되지 않습니다.
- implements WebMvcConfigurer 를 이용해 @EbableWebMvc를 사용하여 자동구성된 스프링MVC 구성에 다른 설정을 추가할 수 있게끔 해줍니다.
WebConfig.xml
public class WebConfig extends AbstractAnnotationConfigDispatcherServletInitializer {...}
- web.xml 과 같은 역할을 합니다.
반응형