Spring Boot:本地运行与部署Jar的不同配置?

时间:2018-04-26 13:48:04

标签: spring spring-boot gradle

所以我有一个使用jar部署在Amazon Web Services上的spring boot应用程序,我也使用" Boot Run"在本地运行程序。在IntelliJ中进行测试 当我在本地运行bootrun并从云中的jar部署它时,我想要改变程序的运行方式只有两件事。

在我的app.properties中,我设置了4个与在redis集群中存储sessin数据相关的属性,并且我在java @Configuration类中有一个与配置redis相关的@Bean。如何设置它当我在本地运行时,Spring会忽略那4个属性和java bean,但在部署时会包含它们吗?

1 个答案:

答案 0 :(得分:0)

您可以使用Spring配置文件。您可以使用特定的配置文件有条件地覆盖属性和加载类。

application.properties个人资料默认加载了您的default文件。我们假设您要覆盖Redis配置。只需将名为application-redis.properties的文件添加到resources文件夹中,然后编写要覆盖的属性。然后在命令行中使用参数--spring.profiles.active=redis运行您的应用程序(如果您使用的是maven,它将是-Dspring.profiles.active=redis,我不知道Gradle是否属于这种情况),或添加到application.propertiesspring.profiles.active=redis以避免争论。如果您构建jar,这也有效。

示例:

#application.properties

some.config=some-value

#application-redis.properties

#this value takes precedence if you run with the profile "redis" active
some.config=other-value

然后,要加载特定的@Configuration类(或任何其他弹簧注入类),请添加@Profile注释,如:

@Profile("redis")
@Configuration
public class SomeConfigurationClass {
  //...
}

然后,只有在使用" redis"运行应用程序时才会加载此Configuration类。活跃档案。您可以阅读文档以获取更多信息:

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-profiles.html