<현재 톰캣 서버 포트 번호 8080 으로 자동으로 실행되는데

사용자 구성정보에 포트 번호 9090 으로 변경하기>

 

 

 

1. WebServerConfiguration class 만들기

 

@Configuration(proxyBeanMethods = false)
public class WebServerConfiguration {
    @Bean
    ServletWebServerFactory customerWebServerfactory(){
        TomcatServletWebServerFactory serverFactory = new TomcatServletWebServerFactory();
        serverFactory.setPort(9090);
        return serverFactory;
    }
}

setPort 사용하여 포트 9090으로 변경

proxyBeanMethods = false

특별하게 bin 사이에 상호 메소드 호출을 통해 의존관계 주입을 넣을게 아니라면
proxyBeanMethods를 fasle로 설정

 

 

2. 테스트 해보면 오류

 

아래와 같이 멀티풀 오류가 뜸

Unable to start web server; nested exception is org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to multiple ServletWebServerFactory beans : customerWebServerfactory,tomcatWebServerFactory

 

* 사용자 구성정보와 자동구성정보에 똑같은 Bean이 있다면

사용자 구성정보에 있는 Bean이 우선적 그 후 자동구성정보가 실행되는데

 

사용자 구성정보에 적힌 Bean에 이미 Tomcat이 있어 자동구성정보도 실행되면서 에러 발생

 

 

 

3. 해결방안

 

자동정보인 tomcatWebServerFactory에 Bean에 아래 어노테이션 추가

 

@ConditionalOnMissingBean

 

사용자 구성 정보에 개발자가 이거랑 같은 타입의 빈을 구성정보로 만들었는지 확인 후

없을 경우에 해당 빈 생성해주는 어노테이션

 

 

 

4. 다시 테스트 해보면 9090 포트로 Tomcat 서버 확인 가능

 

 

+ Recent posts