首页 > 解决方案 > 使用不同的配置取决于弹簧活动配置文件

问题描述

我想根据活动弹簧轮廓有不同的弹簧配置。如果我用 --spring.profiles.active=blabla 启动 jar,我使用一个配置,如果启动参数中没有配置文件,我使用另一个。现在我可以使用 blabla 配置文件,但是如果我在没有配置文件的情况下启动 jar,它会同时使用两者。

默认配置:

@SpringBootApplication(
        exclude = {
                DataSourceAutoConfiguration.class,
                DataSourceTransactionManagerAutoConfiguration.class,
                HibernateJpaAutoConfiguration.class,
                SecurityAutoConfiguration.class})
@Slf4j
public class DefaultConfig {

    public DefaultConfig() {
        log.error("Using default config");
    }

}

布拉布拉配置:

@Profile("blabla")
@Configuration
@Import({
        DispatcherServletAutoConfiguration.class,
        ErrorMvcAutoConfiguration.class,
        JacksonAutoConfiguration.class,
        WebMvcAutoConfiguration.class,
        ServletWebServerFactoryAutoConfiguration.class,
})
@Slf4j
public class BlablaConfig {

    public BlablaConfig() {
        log.error("Using bla bla config");
    }

}

现在:

java -jar app.jar:

...
Using default config
Using bla bla config
...

java -jar app.jar --spring.profiles.active=blabla:

...
Using bla bla config
...

应该是:

java -jar app.jar:

...
Using default config
...

java -jar app.jar --spring.profiles.active=blabla:

...
Using bla bla config
...

标签: javaspringspring-boot

解决方案


添加@Profile("!blabla")到您的DefaultConfig.


推荐阅读