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

文章目录

  1. 1. 使用属性文件2. YAML文件

    1. 1.1. 自定义属性
    2. 1.2. 参数引用
    3. 1.3. 随机数属性
    4. 1.4. application-{profile}.properties参数加载
  2. 3. 源代码

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: [email protected].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

(完)

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

时间: 2024-10-08 00:14:01

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

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

文章目录 1. 快速开始 2. 监控和管理端点3. 定制端点 2.1. health 应用健康指标 2.2. info 查看应用信息 2.3. metrics 应用基本指标 2.4. trace 基本的HTTP跟踪信息 2.5. shutdown关闭当前应用 4. 源代码 Spring Boot 提供运行时的应用监控和管理功能.本文,我们通过 HTTP 实现对应用的监控和管理. 快速开始 Spring Boot 监控核心是 spring-boot-starter-actuator 依赖,增加依赖

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

文章目录 1. 什么是 RabitMQ 2. Spring Boot 整合 RabbitMQ 3. 实战演练4. 源代码 3.1. 一个简单的实战开始 3.1.1. Configuration 3.1.2. 消息生产者 3.1.3. 消息消费者 3.1.4. 运行 3.1.5. 单元测试 3.2. 路由的实战演练 3.2.1. Configuration 3.2.2. 消息生产者 3.2.3. 消息消费者 3.2.4. 运行 3.2.5. 单元测试 本文,讲解 Spring Boot 如何集成

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

文章目录 1. 内置 HealthIndicator 监控检测 2. 自定义 HealthIndicator 监控检测 3. 源代码 Health 信息是从 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring Boot 内置了一些 HealthIndicator. 内置 HealthIndicator 监控检测 Name Description CassandraHealthIndicator Checks that a Cas

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

文章目录 1. 继承 AbstractEndpoint 抽象类 2. 创建端点配置类 3. 运行 4. 源代码 Spring Boot 提供的端点不能满足我们的业务需求时,我们可以自定义一个端点. 本文,我将演示一个简单的自定义端点,用来查看服务器的当前时间,它将返回两个参数,一个是标准的包含时区的当前时间格式,一个是当前时间的时间戳格式. 继承 AbstractEndpoint 抽象类 首先,我们需要继承 AbstractEndpoint 抽象类.因为它是 Endpoint 接口的抽象实现,此

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

Spring Boot 内嵌的 Tomcat 服务器默认运行在 8080 端口.如果,我们需要修改Tomcat的端口,我们可以在 src/main/resources/application.properties 中配置Tomcat信息. server.port=8089 现在,你可以重新运行上面的例子,看下是不是 Tomcat 的端口变成 8089 了. 如果想直接通过代码配置 Tomcat, 可以直接定义 TomcatEmbeddedServletContainerFactory. 现在,我

Spring Boot 揭秘与实战(二) 数据存储篇 - MongoDB

文章目录 1. 环境依赖 2. 数据源 2.1. 方案一 使用 Spring Boot 默认配置 2.2. 方案二 手动创建 3. 使用mongoTemplate操作4. 总结 3.1. 实体对象 3.2. DAO相关 3.3. Service相关 3.4. Controller相关 5. 源代码 本文讲解Spring Boot基础下,如何使用MongoDB,编写数据访问. 环境依赖 修改 POM 文件,添加spring-boot-starter-data-mongodb依赖. <depende

Spring Boot 揭秘与实战(二) 数据存储篇 - Redis

文章目录 1. 环境依赖 2. 数据源 2.1. 方案一 使用 Spring Boot 默认配置 2.2. 方案二 手动创建 3. 使用 redisTemplate 操作4. 总结 3.1. 工具类 3.2. 测试类 3.3. 单元测试用例 5. 源代码 本文讲解Spring Boot基础下,如何整合Redis,编写数据访问. 环境依赖 修改 POM 文件,添加 spring-boot-starter-redis 依赖. <dependency> <groupId>org.spri

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

文章目录 1. Jetty 的切换 2. Undertow的使用 Spring Boot 可选择内嵌 Tomcat.Jetty 和 Undertow,因此我们不需要以 war 包形式部署项目.<Spring Boot 揭秘与实战(五) 服务器篇 - 内嵌的服务器 Tomcat剖析>一文,已经讲解了内嵌的服务器 Tomcat,那么,这篇文章大概讲解下另外两个内嵌的服务器 Jetty 和 Undertow. Jetty 的切换 Spring Boot 默认使用的是 Tomcat 作为内嵌的服务器,

Spring Boot 揭秘与实战(二) 数据缓存篇 - 快速入门

文章目录 1. 声明式缓存 2. Spring Boot默认集成CacheManager 3. 默认的 ConcurrenMapCacheManager 4. 实战演练5. 扩展阅读 4.1. Maven 依赖 4.2. 开启缓存支持 4.3. 服务层 4.4. 控制层 4.5. 运行 4.6. 课后作业 6. 源代码 为了提高性能,减少数据库的压力,使用缓存是非常好的手段之一.本文,讲解 Spring Boot 如何集成缓存管理. 声明式缓存 Spring 定义 CacheManager 和