我可以以编程方式设置弹出配置文件,选择要从中拉出的application.properties文件吗?

时间:2017-12-01 21:54:16

标签: java spring spring-boot

所以我正在开始一个新的spring应用程序,并希望使用spring配置文件以及对应于不同区域的唯一属性文件:

application-dev.properties,application-live.properties等

因此,为了确定我想要使用哪个配置文件,我必须在“启动”中查看一些代码。功能我写的。它基本上检查我的业务区域,如何运行等,并根据该信息设置活动弹簧配置文件。这部分工作正常并且符合预期。

我的问题是,一旦我设置了配置文件,Spring就不会从我的自定义配置文件应用程序 - 配置文件 .properties文件开始。相反,它试图从默认值中获取(如果我有)或者只是为我尝试访问的属性返回null。这不是春天的特色吗?我的个人资料是否必须在运行前设置好?

以下是我设置有效个人资料的方式:

open

1 个答案:

答案 0 :(得分:0)

是的,您可以通过两种方式设置有效个人资料

  

Spring Environment有一个API,但通常你会设置   System属性(spring.profiles.active)或OS环境   变量(SPRING_PROFILES_ACTIVE)。例如。用a启动你的应用程序   -D参数(记得把它放在主类或jar存档之前):

# comments_controller.rb

def create
  @post = Post.find(params[:comment][:post_id])
  @comment = @post.comments.build(comment_params)

  if @comment.save
    redirect_to @post
  else
    render :new
  end
end
  

在Spring Boot中,您还可以设置活动配置文件   application.properties,例如

$ java -jar -Dspring.profiles.active=production demo-0.0.1-SNAPSHOT.jar
  

以这种方式设置的值将替换为System属性或环境   变量设置,但不是SpringApplicationBuilder.profiles()   方法。因此,后一个Java API可用于扩充配置文件   不改变默认值。

来源:https://docs.spring.io/spring-boot/docs/current/reference/html/howto-properties-and-configuration.html#howto-set-active-spring-profiles