问题

在我的应用程序中,我有bean注释为@Profile("prod")@Profile("demo")。第一个,你可以猜测:),用于连接到生产数据库的bean,第二个用于注释使用一些假数据库(HashMap或其他)的bean - 以加快开发速度。

我想要的是默认配置文件("prod"),如果没有被"something-else"覆盖,它将被使用。

完美将在myweb.xml中:

<context-param>
     <param-name>spring.profiles.active</param-name>
     <param-value>prod</param-value>
</context-param>

然后重写这个我可以做到的-Dspring.profiles.active="demo"

mvn jetty:run -Dspring.profiles.active="demo".

但遗憾的是,这不起作用。任何想法我怎么能得到那个?在我的所有环境中设置-Dspring.profiles.active="prod"都不是一个选项。


#1 热门回答(110 赞)

在web.xml中将生产环境定义为默认配置文件

<context-param>
   <param-name>spring.profiles.default</param-name>
   <param-value>prod</param-value>
</context-param>

如果要使用其他配置文件,请将其作为系统属性传递

mvn -Dspring.profiles.active="demo" jetty:run

#2 热门回答(62 赞)

我的经验是使用

@Profile("default")

如果没有识别出其他配置文件,则只会将bean添加到上下文中。如果传入不同的配置文件,例如-Dspring.profiles.active="demo",则忽略此配置文件。


#3 热门回答(5 赞)

你也可以考虑删除PROD配置文件,并使用@Profile("!demo")


原文链接