자동 구성정보 대체하기

Sol's·2023년 5월 31일
0

토비의 스프링 부트

목록 보기
23/31

개발을 하다보면 분명 개발자가 직접 ~ 할때가 있습니다.
그럴때는 자동 구성정보보다 우선하게 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포트로 잘 동작이 됩니다!

구성

profile
배우고, 생각하고, 행동해라

0개의 댓글