相信很多人选择Spring Boot主要是考虑到它既能兼顾Spring的强大功能,还能实现快速开发的便捷。我们在Spring Boot使用过程中,最直观的感受就是没有了原来自己整合Spring应用时繁多的XML配置内容,替代它的是在pom.xml中引入模块化的Starter POMs,其中各个模块都有自己的默认配置,所以如果不是特殊应用场景,就只需要在application.properties中完成一些属性配置就能开启各模块的应用。

在之前的各篇文章中都有提及关于application.properties的使用,主要用来配置数据库连接、日志相关配置等。除了这些配置内容之外,本文将具体介绍一些在application.properties配置中的其他特性和使用方法。

自定义属性与加载

我们在使用Spring Boot的时候,通常也需要定义一些自己使用的属性,我们可以如下方式直接定义:

com.didispace.blog.name=程序猿DD
com.didispace.blog.title=Spring Boot教程

  

然后通过@Value("${属性名}")注解来加载对应的配置属性,具体如下:

@Component
public class BlogProperties { @Value("${com.didispace.blog.name}")
private String name;
@Value("${com.didispace.blog.title}")
private String title; // 省略getter和setter }

  

按照惯例,通过单元测试来验证BlogProperties中的属性是否已经根据配置文件加载了。

@RunWith(SpringJUnit4ClassRunner.class)
@SpringApplicationConfiguration(Application.class)
public class ApplicationTests { @Autowired
private BlogProperties blogProperties; @Test
public void getHello() throws Exception {
Assert.assertEquals(blogProperties.getName(), "程序猿DD");
Assert.assertEquals(blogProperties.getTitle(), "Spring Boot教程");
} }

  

参数间的引用

application.properties中的各个参数之间也可以直接引用来使用,就像下面的设置:

com.didispace.blog.name=程序猿DD
com.didispace.blog.title=Spring Boot教程
com.didispace.blog.desc=${com.didispace.blog.name}正在努力写《${com.didispace.blog.title}》

  

com.didispace.blog.desc参数引用了上文中定义的nametitle属性,最后该属性的值就是程序猿DD正在努力写《Spring Boot教程》

使用随机数

在一些情况下,有些参数我们需要希望它不是一个固定的值,比如密钥、服务端口等。Spring Boot的属性配置文件中可以通过${random}来产生int值、long值或者string字符串,来支持属性的随机值。

# 随机字符串
com.didispace.blog.value=${random.value}
# 随机int
com.didispace.blog.number=${random.int}
# 随机long
com.didispace.blog.bignumber=${random.long}
# 10以内的随机数
com.didispace.blog.test1=${random.int(10)}
# 10-20的随机数
com.didispace.blog.test2=${random.int[10,20]}

  

源码来源

最新文章

  1. 2016年中国微信小程序专题研究报告
  2. 让OData和NHibernate结合进行动态查询
  3. C++ cast
  4. 1Z0-053 争议题目解析700
  5. makefile命令基本运用(一)
  6. 写字节流转换String 代码示例
  7. Java设计模式 - 适配器模式
  8. Hibernate占位符?和:及JPA
  9. ASP.NET MVC3系列页面缓存、缓存依赖SQL(真实项目注意细节)
  10. EasyUI datagrid frozencolumn的bug???
  11. express 3.0.x 中默认不支持layout.ejs的解决方法
  12. hdoj 1262 寻找素数对
  13. Search for a Range ——LeetCode
  14. 原生tab切换
  15. Java 9 揭秘(20. JDK 9中API层次的改变)
  16. Vue.js 基本语法
  17. 【设计模式】工厂方法模式 Factory Method Pattern
  18. OPPO F9 Pro在哪里打开usb调试模式的完美方法
  19. VirtualBox fedora29 安装
  20. DataTable 作为ObjectDataSource的数据源

热门文章

  1. 【Linux 驱动】简单字符设备驱动架构(LED驱动)
  2. Css设置最优先
  3. java实现稀疏数组压缩
  4. C语言--- 高级指针2(结构体指针,数组作为函数参数)
  5. Linux 释放占用端口
  6. Python 把较长的一行代码分成多行的技巧
  7. DNS服务器搭建笔记
  8. Codeforces 1209F. Koala and Notebook
  9. Kibana多用户创建及角色权限控制
  10. elasticsearch系列一elasticsearch(ES简介、安装&配置、集成Ikanalyzer)