我们都知道Spring Boot中的配置文件管理及其为不同环境配置应用程序时提供的灵活性。 此功能的另一个强大方面是,在任何给定时间,我们都可以拥有多个活动配置文件。 这样做的好处是我们可以将部署环境配置文件与业务用例相关的配置文件混合在一起。
让我们假设我们将在同一环境中进行应用程序的不同部署,并且无论它们是否在同一环境中,某些属性都将根据部署进行更改。 在这种情况下,我们可以拥有特定于环境的应用程序属性文件,然后每个此类文件都可以覆盖根据不同部署而变化的属性。
我定义了三个应用程序属性文件,如下所示:
#application.properties
app.name=Default
spring.profiles.active=test,org1
#application-local.properties
app.name=Local
#application-test.yml
app:name: Test
---
spring:profiles: org1
app:name: Test Org1
---
spring:profiles: org2
app:name: Test Org2
然后,我们有一个简单的AdvancedPropsDemo
类,它具有main方法,该方法将打印属性app.name
的值:
@SpringBootApplication
@Component
public class AdvancedPropsDemo implements ApplicationRunner {@Value("${app.name}")String appName;public static void main(String[] args) {new SpringApplication(AdvancedPropsDemo.class).run(args);}@Overridepublic void run(ApplicationArguments args) throws Exception {System.out.println("App Name value " + appName);}
}
我们有一组test,org1
作为活动的配置文件和Spring引导已回升智能application-test.yml
文件,然后挑app.name
中定义的属性org1
轮廓。 在YAML属性文件中,我们可以为同一文件中的不同配置文件创建不同的部分,并在其对应的配置文件部分中覆盖所需的属性
完整的代码可以在这里找到。
翻译自: https://www.javacodegeeks.com/2020/01/advanced-profile-management-in-spring-boot.html