Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当通过自动配置模块打开其他端口时,应用程序无法启动_Java_Spring Boot_Configuration - Fatal编程技术网

Java 当通过自动配置模块打开其他端口时,应用程序无法启动

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

我正在尝试创建一个库,它可以在第二个端口(8090)上公开SpringBoot应用程序

为此,我有一个如下定义的自动配置:

@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);
返回连接器;
}
}