根据环境注入特定的bean是好事还是坏事?

时间:2019-12-17 08:17:44

标签: spring spring-profiles spring-properties

用例:我们希望在除LIVE(PROD)之外的所有环境中应用电子邮件地址白名单-在这里,我们希望将电子邮件发送到任何给定地址。注释没有白名单的@Profile("live")和白名单的@Profile("!live")的bean是一种很好的方法吗?还是最好用properties来解决该问题,根据环境的不同,这些值会有所不同。

2 个答案:

答案 0 :(得分:2)

在属性之间复制粘贴值时,仅使用属性解决问题就更容易出错。

如果您使用不同的配置文件,则管理不同属性的值会更容易,Spring为此提供了配置文件功能。

答案 1 :(得分:1)

如果用properties解决了这个问题,是否意味着您必须针对不同的环境打包不同的JAR / WAR?

基于CI / CD原理,最好构建一次并将同一工件经常部署到不同环境中,这意味着该工件应支持一种基于某些参数,选项或环境为不同环境配置设置的方法在启动应用程序期间提供的变量。

@Profile正是提供了这样的功能,它使您可以通过使用-Dspring.profiles.active选项来配置要使用的配置文件:

java -jar -Dspring.profiles.active=live application.jar