所以我有一个使用jar部署在Amazon Web Services上的spring boot应用程序,我也使用" Boot Run"在本地运行程序。在IntelliJ中进行测试 当我在本地运行bootrun并从云中的jar部署它时,我想要改变程序的运行方式只有两件事。
在我的app.properties中,我设置了4个与在redis集群中存储sessin数据相关的属性,并且我在java @Configuration类中有一个与配置redis相关的@Bean。如何设置它当我在本地运行时,Spring会忽略那4个属性和java bean,但在部署时会包含它们吗?
答案 0 :(得分:0)
您可以使用Spring配置文件。您可以使用特定的配置文件有条件地覆盖属性和加载类。
application.properties
个人资料默认加载了您的default
文件。我们假设您要覆盖Redis配置。只需将名为application-redis.properties
的文件添加到resources文件夹中,然后编写要覆盖的属性。然后在命令行中使用参数--spring.profiles.active=redis
运行您的应用程序(如果您使用的是maven,它将是-Dspring.profiles.active=redis
,我不知道Gradle是否属于这种情况),或添加到application.properties
行spring.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