개발을 하다보면 분명 개발자가 직접 ~ 할때가 있습니다.
그럴때는 자동 구성정보보다 우선하게 Bean을 등록할 수 있습니다.
@ConditionalOnMissingBean
을 사용하면 됩니다.
@ConditionalOnMissingBean
: 같은 타입의 Bean이 없다면 생성해라
즉, 현재 Servlet이 있는경우는 Bean등록이 안되고
없는경우에만 등록이 되는것입니다.
@MyAutoConfiguration
@ConditionalMyOnClass("org.apache.catalina.startup.Tomcat")
public class TomcatWebServerConfig {
@Bean("tomcatWebServerFactory")
@ConditionalOnMissingBean // 같은 타입의 Bean이 없다면 생성해라
public ServletWebServerFactory servletWebServerFactory(){
return new TomcatServletWebServerFactory();
}
}
위와 같이 설정하면 직접 구현한 인프라 스트럭쳐 빈Tomcat
을 사용해도 에러가 발생하지 않습니다.
@Configuration(proxyBeanMethods = false)
public class WebServerConfiguration {
@Bean
ServletWebServerFactory customerWebServerFactory() {
TomcatServletWebServerFactory serverFactory = new TomcatServletWebServerFactory();
serverFactory.setPort(9090);
return serverFactory;
}
}
9090포트로 잘 동작이 됩니다!