스타터와 Jetty 서버 구성 추가
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.6'
id 'io.spring.dependency-management' version '1.1.5'
}
group = 'com.tobyspring'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '11'
}
repositories {
mavenCentral()
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter-web'
// Spring boot starter jetty 추가
implementation 'org.springframework.boot:spring-boot-starter-jetty'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}
tasks.named('test') {
useJUnitPlatform()
}
Spring Starter 문서를 참고하여 Jetty Servlet Container를 사용할 수 있도록 Gradle에 의존성을 추가해 줍니다.
@MyAutoConfiguration
public class JettyWebServerConfig {
// jetty 구성정보 등록
// JettyServletContainer Bean Name 등
@Bean("jettyWebServerFactory")
public ServletWebServerFactory servletWebServerFactory() {
return new JettyServletWebServerFactory();
}
}
의존성을 추가한 이후 Jetty Servlet Container 구성정보를 등록해 줍니다.
@MyAutoConfiguration
public class TomcatWebServerConfig {
// TomcatServletContainer Bean Name 등록
@Bean("tomcatWebServerFactory")
public ServletWebServerFactory servletWebServerFactory() {
return new TomcatServletWebServerFactory();
}
}
```
기존에 사용했던 Tomcat Servlet Container 구성정보수정사항이 있는데 @Bean 어노테이션에 해당 Bean에 이름을 지정해주도록 합니다.
com.tobyspring.config.MyAutoConfiguration.imports
com.tobyspring.config.autoconfig.TomcatWebServerConfig
com.tobyspring.config.autoconfig.JettyWebServerConfig
com.tobyspring.config.autoconfig.DispatcherServletConfig
Auto Configuration으로 로딩되는 매커니즘을 사용하여 Configuration이 등록되게 만들려면 imports파일에 해당 클래스를 등록해 줍니다.
Unable to start ServletWebServerApplicationContext due to multiple ServletWebServerFactory beans : tomcatWebServerFactory,jettyWebServerFactory
TomcatServletContainer, JettyServletContainer를 모두 자동구성정보에 등록하여 서버를 시작하면 위와같은 오류 메세지를 확인할 수 있는데 Spring에서는 ServletWebServerApplicationContext가 하나여야하는데 두개가 존재하므로 어떤 WebServerFactory를 사용할지 모르기에 오류가 발생합니다.
둘중 어떤 구성정보를 사용하여 Bean을 생성할지 조건부 자동구성에 대한건 다음 섹션에서 알아보도록 하겠습니다.
'Spring > 인프런 토비의 Spring Boot' 카테고리의 다른 글
섹션 7-3 [조건부 자동구성] @Conditional, Condition 학습 테스트 (0) | 2024.06.27 |
---|---|
섹션 7-2 [조건부 자동구성] @Conditional과 Condition (0) | 2024.06.27 |
섹션 6-5 [자동 구성 기반 애플리케이션] 동적인 자동 구성 정보 등록 (0) | 2024.06.15 |
섹션 6-8 [자동 구성 기반 애플리케이션] @Configuration과 proxybeanMethods (0) | 2024.06.14 |
섹션 6-7 [자동 구성 기반 애플리케이션] 자동 구성 애노테이션 적용 (0) | 2024.06.14 |