5. dooray-spring-boot-autoconfigure 개발¶
5.1. dooray.hook-url 속성을 사용할 수 있도록 프로퍼티 클래스를 개발합니다.¶
- hookUrl 프로퍼티를 선언하면 스프링부트의 Relaxed Binding 기능으로 dooray.hook-url 속성을 사용할 수 있습니다.
- @ConfigurationProperties 애너테이션을 사용하는 것이 핵심입니다.
- /src/main/java/com/nhn/edu/springboot/starter/DoorayProperties.java
@ConfigurationProperties(prefix = "dooray")
public class DoorayProperties {
private String hookUrl;
public String getHookUrl() {
return hookUrl;
}
public void setHookUrl(String hookUrl) {
this.hookUrl = hookUrl;
}
}
5.2. DoorayHookSender.class 가 Classpath에 존재할 때, DoorayAutoConfiguration 가 동작하도록 설정합니다.¶
- @ConditionalOnClass : 지정한 클래스가 존재하면 java config가 동작합니다.
- /src/main/java/com/nhn/edu/springboot/starter/DoorayAutoConfiguration.java
@Configuration
@ConditionalOnClass(DoorayHookSender.class)
@ConditionalOnProperty()
@EnableConfigurationProperties(DoorayProperties.class)
public class DoorayAutoConfiguration {
}
5.3. dooray.hook-url 속성이 정의되어 있을 때 , DoorayAutoConfiguration 가 동작하도록 설정합니다.¶
- @ConditionalOnProperty : 지정한 속성이 정의되어 있으면 java config가 동작합니다.
- /src/main/java/com/nhn/edu/springboot/starter/DoorayAutoConfiguration.java
@Configuration
@ConditionalOnClass(DoorayHookSender.class)
@ConditionalOnProperty("dooray.hook-url")
@EnableConfigurationProperties(DoorayProperties.class)
public class DoorayAutoConfiguration {
}
5.4. 애플리케이션의 다른 설정에서 RestTemplate 타입의 빈이 설정되지 않았을 때, restTemplate 빈을 생성하도록 합니다.¶
- @ConditionalOnMissingBean : 특정 타입의 빈이 선언되지 않았으면 java config가 동작합니다.
- /src/main/java/com/nhn/edu/springboot/starter/DoorayAutoConfiguration.java
@ConditionalOnMissingBean(RestTemplate.class)
@Bean
public RestTemplate restTemplate() {
return new RestTemplateBuilder().build();
}
5.5. DoorayHookSender 빈을 선언합니다.¶
- DoorayHookSender 의 DoorayHookSender(RestTemplate resttemplate, String url) 생성자를 이용하여 빈을 선언합니다.
- /src/main/java/com/nhn/edu/springboot/starter/DoorayAutoConfiguration.java
@Bean
public DoorayHookSender doorayHookSender(RestTemplate restTemplate, DoorayProperties doorayProperties) {
return new DoorayHookSender(restTemplate, doorayProperties.getHookUrl());
}
5.6. 스프링부트 애플리케이션이 로딩할 JavaConfiguration 을 지정해 줍니다.¶
- /src/main/resources/META-INF/spring.factories
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.nhn.edu.springboot.starter.DoorayAutoConfiguration