6.4Spring环境配置等级和优先级

本文介绍了如何在Spring应用中管理不同环境的配置,包括@Profile注解的使用、Profile选择器添加特殊属性文件、PropertySource的整合应用。详细讲解了配置的加载顺序和优先级,如命令行参数、JNDI Attributes、Java System Properties、OS Environment Variables以及默认属性。同时,通过示例展示了如何结合Apache Commons Configuration框架读取XML配置文件并集成到Spring Boot应用中。
摘要由CSDN通过智能技术生成

在前面的章节中,我们已经学习了如何去用不同的方式去打包我们的应用和如何部署。下一步,我们需要配置我们的应用在可控制的范围还有就是环境特殊的配置参数。

  这一章节,我们基于前面的章节,添加支持不同配置的文件,同时测试如何使用适当的参数作为点位符在其它适应的声明中,并且如何添加我们的PropertySource应用。

6.4.1如何使用

  1. 我们需要在src/main/java/org/owen/bookpub目录下的BookPubApplication.java中加入@Profile注解。

 @Bean

    @Profile("logger")

    public StartupRunner schedulerRunner()

    {

 

       return new StartupRunner();

    }

 

  1. 启动应用
  2. 一旦应用启动了,我们不可能看到先前的日志输出,如下:

2020-04-19 --- org.test.bookpub.StartupRunner : Number of
books: 1

  1. 现在,我们执行./gradle clean bootRepackage 和 启动应用 ./build/libs/bookpub-0.0.1-SNAPSHOT-exec.jar –spring.profiles.active=logger 和我们将会看到先前的那行日志输出了。
  2. 还有一种运行是通过Profile选择器能够添加Profile特殊的属性文件。让我们创建application-inmemorydb.properties文件放置到src/main/resource目录下,添加内容如下:

 spring.datasource.url =
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE

  1. 让我们创建应用./gradle clean bootRepackage 和使用命令启动,./build/libs/bookpub-0.0.1-SNAPSHOT-exe.jar –spring.profiles.active=logger,inmemorydb,这样的话,我们就是使用inmemorydb的Profile配置目的是为了使用in-memory数据库取代file-base.

 

在这个例子中,我们已经使用了一个特定的配置系统,Spring Boot提供我们可以通过PropertySource应用去整合这个应用。

让我们想象,我们已经有一个配置启动和使用Apache Commons Configuration框架和储蓄配置数据在XML文件中。

  1. 在build.gradle文件中加入以下的配置:

 dependencies {
...
compile project(':db-count-starter')
compile("commons-configuration:commons-configuration:1.6")
compile("commons-codec:commons-codec:1.6")
compile("commons-jxpath:commons-jxpath:1.3")
compile("commons-collections:commons-collections:3.2.1")
runtime("com.h2database:h2")
...
}

 

  1. 在src/main/resource目录下他去简单的commons-config.xml的文件,内容如下:

 <?xml version="1.0" encoding="ISO-8859-1" ?>
<config>
<book>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值