자동 설정 모듈을 만들고 이를 스프링 부트 애플리케이션에 통합하기.
(선택) 프로파일과 조건을 사용하여 스프링 부트의 자동 설정 충돌 해결 방식을 분석하기.
@Configuration
annotation으로 spring configuration class 명시하기. @Configuration
@EnableWebMvc
@ConditionalOnClass(HelloController.class)
public class MyAutoConfiguration {
@Bean
@ConditionalOnMissingBean(HelloController.class)
public HelloController helloController() {
return new HelloController();
}
}
spring.factories
파일 등록spring.factores
파일로 auto configuration을 인식한다.src/main/resources/META-INF
경로에 spring.factories
생성하기
1에서 만든 AutoConfiguration Class 경로를 작성하기
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\gdg.spring_lab_01\MyAutoConfiguration
build.gradle
에 의존성 추가 dependencies {
implementation 'org.springframework.boot:spring-boot-autoconfigure'
}
build.gradle
에 테스트를 위한 의존성 추가하기
dependencies {
testImplementation 'org.springframework.boot:spring-boot-starter-test'
}
테스트 코드
@SpringBootTest
class MyAutoConfigurationTest {
@Autowired
private ApplicationContext context;
@Test
void helloControllerBeanShouldBeRegistered() {
HelloController helloController = context.getBean(HelloController.class);
assertThat(helloController).isNotNull();
}
}
ApplicationContext에서 HelloController 빈을 가져오고, null이 아닌지 검증한다.