Spring 框架本身提供了多种的方式来管理配置属性文件。Spring 3.1 之前可以使用 PropertyPlaceholderConfigurer。Spring 3.1 引入了新的环境(Environment)和概要信息(Profile)API,是一种更加灵活的处理不同环境和配置文件的方式。不过 Spring 这些配置管理方式的问题在于选择太多,让开发人员无所适从。Spring Boot 提供了一种统一的方式来管理应用的配置。

使用属性文件

自定义属性

Spring Boot 提供的 SpringApplication 类会搜索并加载 application.properties 文件来获取配置属性值。

创建 application.properties 文件。

  1. author.realname=梁桂钊
  2. author.nickname=LiangGzone

不需要其他配置,我们只需要通过 @Value(“${属性名}”) 注解来加载对应的配置属性,现在,通过单元测试用例来验证吧。

  1. @Value("${author.realname}")
  2. private String realname;
  3. @Value("${author.nickname}")
  4. private String nickname;
  5. @Test
  6. public void test1() throws Exception {
  7. System.out.println("real_name : " + realname);
  8. System.out.println("nick_name : " + nickname);
  9. }

参数引用

此外,我们来可以通过引用参数来使用。

  1. author.product=Spring Boot 揭秘与实战
  2. author.project=springboot-action
  3. author.intro=${author.product} | ${author.project} | 作者:${author.realname}

那么,问题来了, author.intro 通过参数引用得到的结果是什么呢?现在,通过单元测试用例来进行测试。

  1. @Value("${author.intro}")
  2. private String intro;
  3. @Test
  4. public void test2() throws Exception {
  5. System.out.println("intro : " + intro);
  6. }

随机数属性

Spring Boot 的属性配置文件中 ${random} 可以用来生成各种不同类型的随机值,从而简化了代码生成的麻烦,例如 生成 int 值、long 值或者 string 字符串。

  1. # 32位随机字符串
  2. rand.str = ${random.value}
  3. # 随机int类型
  4. rand.intid = ${random.int}
  5. # 随机long类型
  6. rand.longid = ${random.long}
  7. # 100以内的随机int类型
  8. rand.number = ${random.int(100)}
  9. # 0-100范围内的随机int类型
  10. rand.range = ${random.int[0,100]}

附上,单元测试用例。

  1. @Value("${rand.str}")
  2. private String randStr;
  3. @Value("${rand.intid}")
  4. private int randIntid;
  5. @Value("${rand.longid}")
  6. private long randLongid;
  7. @Value("${rand.number}")
  8. private int randNumber;
  9. @Value("${rand.range}")
  10. private String randRange;
  11. @Test
  12. public void test3() throws Exception {
  13. System.out.println("rand.str : " + randStr);
  14. System.out.println("rand.intid : " + randIntid);
  15. System.out.println("rand.longid : " + randLongid);
  16. System.out.println("rand.number : " + randNumber);
  17. System.out.println("rand.range : " + randRange);
  18. }

application-{profile}.properties参数加载

一个非常典型的场景,多环境配置。Spring Boot 也给我们提供了非常简化的配置。

现在,我们根据环境创建4个配置文件。

  1. #开发环境
  2. application-development.properties
  3. #测试环境
  4. application-test.properties
  5. #预生产环境
  6. application-preproduction.properties
  7. #生产环境
  8. application-product.properties

执行命令,通过 active 加载测试环境的配置。

  1. java -jar ***.jar --spring.profiles.active=test

YAML文件

相对于属性文件,YAML 文件是一个更好的配置文件格式。Spring Boot 提供的 SpringApplication 类也提供了对 YAML 配置文件的支持。
创建application.yml 文件

  1. author:
  2. email: lianggzone@163.com
  3. blog: http://blog.720ui.com

那么,我们再来测试一下,是否正常使用哈。

  1. @Value("${author.email}")
  2. private String email;
  3. @Value("${author.blog}")
  4. private String blog;
  5. @Test
  6. public void test4() throws Exception {
  7. System.out.println("email : " + email);
  8. System.out.println("blog : " + blog);
  9. }

源代码

相关示例完整代码: springboot-action

(完)

如果觉得我的文章对你有帮助,请随意打赏。

Spring Boot 揭秘与实战(四) 配置文件篇 - 有哪些很棒的特性的更多相关文章

  1. Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 应用监控

    文章目录 1. 快速开始 2. 监控和管理端点3. 定制端点 2.1. health 应用健康指标 2.2. info 查看应用信息 2.3. metrics 应用基本指标 2.4. trace 基本 ...

  2. Spring Boot 揭秘与实战(六) 消息队列篇 - RabbitMQ

    文章目录 1. 什么是 RabitMQ 2. Spring Boot 整合 RabbitMQ 3. 实战演练4. 源代码 3.1. 一个简单的实战开始 3.1.1. Configuration 3.1 ...

  3. Spring Boot 揭秘与实战(三) 日志框架篇 - 如何快速集成日志系统

    文章目录 1. 默认的日志框架 logback2. 常用的日志框架 log4j 1.1. 日志级别 1.2. 日志文件 3. 源代码 Java 有很多日志系统,例如,Java Util Logging ...

  4. Spring Boot 揭秘与实战(二) 数据存储篇 - MyBatis整合

    文章目录 1. 环境依赖 2. 数据源3. 脚本初始化 2.1. 方案一 使用 Spring Boot 默认配置 2.2. 方案二 手动创建 4. MyBatis整合5. 总结 4.1. 方案一 通过 ...

  5. Spring Boot 揭秘与实战(九) 应用监控篇 - 自定义监控端点

    文章目录 1. 继承 AbstractEndpoint 抽象类 2. 创建端点配置类 3. 运行 4. 源代码 Spring Boot 提供的端点不能满足我们的业务需求时,我们可以自定义一个端点. 本 ...

  6. Spring Boot 揭秘与实战(九) 应用监控篇 - HTTP 健康监控

    文章目录 1. 内置 HealthIndicator 监控检测 2. 自定义 HealthIndicator 监控检测 3. 源代码 Health 信息是从 ApplicationContext 中所 ...

  7. Spring Boot 揭秘与实战(五) 服务器篇 - Tomcat 启用 HTTPS

    文章目录 1. 生成证书 2. 配置 HTTPS 支持 3. 启动与测试 4. 源代码 Spring Boot 内嵌的 Tomcat 服务器可以启用 HTTPS 支持. 生成证书 使用第三方 CA 证 ...

  8. Spring Boot 揭秘与实战(五) 服务器篇 - 其他内嵌服务器 发表于 2017-01-03 | Spring框架 | Spri

    文章目录 1. Jetty 的切换 2. Undertow的使用 Spring Boot 可选择内嵌 Tomcat.Jetty 和 Undertow,因此我们不需要以 war 包形式部署项目.< ...

  9. Spring Boot 揭秘与实战(五) 服务器篇 - Tomcat 代码配置

    Spring Boot 内嵌的 Tomcat 服务器默认运行在 8080 端口.如果,我们需要修改Tomcat的端口,我们可以在 src/main/resources/application.prop ...

随机推荐

  1. PAT 1035 Password

    1035 Password (20 分)   To prepare for PAT, the judge sometimes has to generate random passwords for ...

  2. vmplayer桥接以及nat配置nginx

    1.环境 centos6.4 vm player nginx1.8 2.虚拟机的防火墙 参考http://blog.csdn.net/qilovehua/article/details/4550713 ...

  3. python使用MySQLdb模块连接MySQL

    1.安装驱动 目前有两个MySQL的驱动,我们可以选择其中一个进行安装: MySQL-python:是封装了MySQL C驱动的Python驱动:mysql-connector-python:是MyS ...

  4. OpenSSH隐藏版本号教程

    1.查看当前OpenSSH版本号 sshd -v #sshd并没有-v选项,这并不是重点重点是这样能曝出版本号 2.查看sshd位置 which sshd 3.备份sshd cp /usr/sbin/ ...

  5. laravel模型中设计使用单选按钮的方法:

    模型中写入: const SEX_UN = 10;//未知: const SEX_BOY = 20;//男 const SEX_GRIL = 30;//女 public function sex($i ...

  6. ldap+flask+python2实现统一认证里面的那些编码神坑

    首先想吐槽下,直接接手别人的项目,而且是经过四五个人手的项目,是怎么个痛苦.两三套代码django.flask.tornado应有尽有,代码里,掰开手指头就可数的全英文注释,几台服务器没交接清楚,所有 ...

  7. C#通过shell32获取文件详细备注信息

    1.从系统Window/System32文件夹中Copy出 Shell32.dll Com组件 将Shell32.dll文件引用到项目中,并设置“嵌入互操作类型”为false http://blog. ...

  8. sqlalchemy动态组合查询语句。

    if filter_type == 1: search = and_(GameRoom.status ==1,or_( and_(GameRoom.white_user_id == user_id, ...

  9. hybrid几种模式

    native和web适合的场景 Native: 用户体验要求高 业务变动很小(如首页) 性能要求高 Web: 业务变化频繁(如广告) 性能要求低 展示性内容 hybrid App其实会有不同的分支 方 ...

  10. linux 创建安装redis服务

    1.找下redis的官方的下载地址:http://download.redis.io/releases/redis-3.2.8.tar.gz  有最新的就下载最新 先下载解压跟安装 wget http ...