Spring Boot多个配置文件在IDE中运行,但不在命令行中运行

时间:2018-03-05 13:38:21

标签: java spring spring-boot

我有一个带有几个Java Config类的Spring Boot应用程序。每个类都有自己的@Profile名称。从Eclipse运行应用程序时,程序参数设置为 --spring.profiles.active=config1,config2 服务器按预期运行,并且两个Config类中的所有bean都在运行。

但是当我尝试从--spring.profiles...命令行启动应用程序时,只有一个配置文件'豆子正在运行,顺序并不重要。它只是按字母顺序排列的最后一个配置文件。即使日志说

The following profiles are active: config1,config2

config1的所有豆子都没有踢。

还尝试在道具文件中设置spring.profiles.include,结果相同。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

这个问题仍困扰着我。如果使用隔离的任何配置文件,它们都可以工作,但是当这两个配置文件合并时,永远不会创建config1配置文件的bean。调试Spring启动时说,找到了配置并且正在进行预创建。但真正的bean永远不会被创建和返回。

我创建了一个包装类,它包装了config1 Java Config类中的一个bean,强制Spring从该特定配置创建bean。这不是问题的答案,也不是解决问题的方法,而是解决问题。

@Service
@Profile("config1")
public class DataConsumerWrapperService {

    public DataConsumerWrapperService(final MessageParser mp) {
        // Do nothing, just trigger the parser bean creation
    }
}