Java 当通过自动配置模块打开其他端口时,应用程序无法启动
我正在尝试创建一个库,它可以在第二个端口(8090)上公开SpringBoot应用程序 为此,我有一个如下定义的自动配置:Java 当通过自动配置模块打开其他端口时,应用程序无法启动,java,spring-boot,configuration,Java,Spring Boot,Configuration,我正在尝试创建一个库,它可以在第二个端口(8090)上公开SpringBoot应用程序 为此,我有一个如下定义的自动配置: @Configuration @ConditionalOnWebApplication( type = Type.SERVLET ) public class HttpConfig { public HttpConfig() { } @Bean public ServletWebServerFactory servletContai
@Configuration
@ConditionalOnWebApplication(
type = Type.SERVLET
)
public class HttpConfig {
public HttpConfig() {
}
@Bean
public ServletWebServerFactory servletContainer() {
TomcatServletWebServerFactory factory = new TomcatServletWebServerFactory();
factory.addAdditionalTomcatConnectors(new Connector[]{this.createStanderConnecter()});
return factory;
}
private Connector createStanderConnecter() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(8090);
return connector;
}
}
如果我在同一个项目中定义此配置,它就可以正常工作。
但如果我将此配置作为模块导入,我的应用程序将无法启动,出现以下错误:
Caused by: org.springframework.context.ApplicationContextException: Unable to start ServletWebServerApplicationContext due to multiple ServletWebServerFactory beans : tomcatServletWebServerFactory,servletContainer
我错过了什么?我想。如果有人想完成我想做的事。我必须实现
WebServerFactoryCustomizer
,而不是配置,如下所示:
@Component
@ConditionalOnWebApplication(
type = Type.SERVLET
)
public class HttpConfig implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Autowired
ApplicationContext context;
public HttpConfig() {
}
public void customize(TomcatServletWebServerFactory factory) {
factory.addAdditionalTomcatConnectors(new Connector[]{this.createStanderConnecter()});
}
private Connector createStanderConnecter() {
Connector connector = new Connector("org.apache.coyote.http11.Http11NioProtocol");
connector.setPort(8090);
return connector;
}
}
@组件
@条件性网络应用(
type=type.SERVLET
)
公共类HttpConfig实现WebServerFactoryCustomizer{
@自动连线
应用上下文上下文;
公共HttpConfig(){
}
公共void自定义(TomcatServletWebServerFactory){
factory.addAdditionalTomcatConnectors(新连接器[]{this.createStanderConnection()});
}
专用连接器CreateStanderConnection(){
连接器连接器=新连接器(“org.apache.coyote.http11.Http11NioProtocol”);
连接器。设置端口(8090);
返回连接器;
}
}