Spring Boot读取自定义外部属性
测试的环境:Spring Boot2 + Maven +lombok
准备需要用到的基础类:
public class People {
private String name;
private String address;
private String phone;
}
准备默认的配置文件application.properties,内容如下
people.default.name=zs
people.default.address=ccc
people.default.phone=122122
准备自定义配置文件people.properties,内容如下
people.default.name=test-zs
people.default.address=test-address
people.default.phone=111111
准备测试类
@RestController
public class PeopleController {
@Autowired
private People people;
@RequestMapping("/test1")
public void test1(){
System.out.println(people);
}
}
第一种情况:读取默认配置文件中的自定义属性(如application.properties)
1、直接在指定类读取文件属性
@Data
//@Setter
@ToString
@Configuration
@ConfigurationProperties(prefix = "people.default")
public class People {
private String name;
private String address;
private String phone;
}
测试结果:

注意:类用到了lombok的注解(@Data)或者使用@Setter注解。所以有getter/setter。如果没有使用注解,则需要setter方法才能读取成功。
2、配合@Vaule读取文件属性
@Configuration
public class PeopleConfigrution {
@Value("${people.default.name}")
private String name;
@Value("${people.default.address}")
private String address;
@Value("${people.default.phone}")
private String phone;
@Bean
public People initPeople(){
People people=new People();
people.setName(name);
people.setPhone(phone);
people.setAddress(address);
return people;
}
}
测试结果:

3、使用Environment读取
@Configuration
public class PeopleConfigrution {
@Autowired
private Environment environment;
@Bean
public People initPeople(){
People people=new People();
people.setName(environment.getProperty("people.default.name"));
people.setPhone(environment.getProperty("people.default.phone"));
people.setAddress(environment.getProperty("people.default.address"));
return people;
}
}
测试结果:

第二种情况:读取自定义文件中的属性(如people.properties)
需指定读取文件的位置,可使用@PropertySource注解指定,如
@Data
//@Setter
@ToString
@Configuration
@PropertySource("classpath:people.properties") //指定读取文件位置,可与读取默认文件第一种方式相比。
@ConfigurationProperties(prefix = "people.default")
public class People {
private String name;
private String address;
private String phone;
}
测试结果:

以上列举的不是全部方式,加载文件的方式还有其他方式,这篇只是列举常用的方式。
Spring Boot读取自定义外部属性的更多相关文章
- (C)spring boot读取自定义配置文件时乱码解决办法
这是入门的第三天了,从简单的hello spring开始,已经慢慢接近web的样子.接下来当然是读取简单的对象属性了. 于是按照网上各位大神教的,简单写了个对象book,如上一篇(B),其他配置不需要 ...
- spring boot读取自定义配置文件时乱码解决办法
@PropertySource(value = "classpath:book.yml", ignoreResourceNotFound = true,encoding = &qu ...
- Spring Boot 支持多种外部配置方式
Spring Boot 支持多种外部配置方式 http://blog.csdn.net/isea533/article/details/50281151 这些方式优先级如下: 命令行参数 来自java ...
- Android读取自定义View属性
Android读取自定义View属性 attrs.xml : <?xml version="1.0" encoding="utf-8"?> < ...
- Spring boot 使用@Value注入属性
Spring boot 使用@Value注入属性 学习了:http://blog.csdn.net/hry2015/article/details/72353994 如果启动的时候报错: spring ...
- Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置
用过 Spring Boot 的小伙伴都知道,我们只需要在项目中引入 spring-boot-starter-web 依赖,SpringMVC 的一整套东西就会自动给我们配置好,但是,真实的项目环境比 ...
- spring boot 读取配置文件(application.yml)中的属性值
在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注 ...
- Spring Boot实践——用外部配置填充Bean属性的几种方法
引用:https://blog.csdn.net/qq_17586821/article/details/79802320 spring boot允许我们把配置信息外部化.由此,我们就可以在不同的环境 ...
- 日志配置文件读取spring boot配置文件中的属性
如果是读取 application.properties 这种spring boot的默认配置文件时 其中 scope固定为context 指明从上下文中获取, name 根据自己的意思给, sou ...
随机推荐
- ElasticSearch实战系列十: ElasticSearch冷热分离架构
前言 本文主要介绍ElasticSearch冷热分离架构以及实现. 冷热分离架构介绍 冷热分离是目前ES非常火的一个架构,它充分的利用的集群机器的优劣来实现资源的调度分配.ES集群的索引写入及查询速度 ...
- Android Studio 之 用 Drawable resource file 美化 Button 样式
shape •新建 Drawable resource file 点击 app/src/main/res 找到 drawable 文件夹,右击->New->Drawable Resourc ...
- SCIP:构造数据抽象--数据结构中队列与树的解释
现在到了数学抽象中最关键的一步:让我们忘记这些符号所表示的对象.不应该在这里停滞不前,有许多操作可以应用于这些符号,而根本不必考虑它们到底代表着什么东西. --Hermann Weyi <思维的 ...
- KMP字符串匹配学习笔记
部分内容引自皎月半洒花的博客 模式串匹配问题模型给定一个需要处理的文本串和一个需要在文本串中搜索的模式串,查询在该文本串中,给出的模式串的出现有无.次数.位置等.算法思想每次失配之后不会从头开始枚举, ...
- [hash]集合
集合 题目描述 给定两个集合A.B,集合内的任一元素x满足1 ≤ x ≤ 109,并且每个集合的元素个数不大于105.我们希望求出A.B之间的关系. 任 务 :给定两个集合的描述,判断它们满足下列关系 ...
- 跨域库herryPostMessage.js的一些优化,多iframe跨域
旧库见文章:https://www.cnblogs.com/wuhairui/p/14595893.html 新版库主要做了下多个iframe和父页面交互的优化.主要使用构造函数的方式将多个ifram ...
- Java(25-40)【数据类型转换、运算符、方法入门】
1.ASCII编码表 0--48 A--65 a--97 2. Unicode万国码 字符'中'为20013 3.算数运算符 double类型的加上int类型结果为double byte short ...
- Java与Python中的‘%’运算符意义一样么?
1. 取余与取模 百度百科对于取模运算做了如下定义: 对于整型数a,b来说,取模运算或者求余运算的方法都是: 1.求 整数商: c = [a/b]; 2.计算模或者余数: r = a - c*b. 求 ...
- redhat7.6 安装 Python 3
redhat7.6 默认安装了python2.7. 查看已安装python情况 cd / # 定位到根目录 whereis python # 查看python所在目录 /usr/bin cd /usr ...
- 有了CopyOnWrite为何又要有ReadWriteLock?
引言 前文我们有介绍<看了CopyOnWriteArrayList后自己实现了一个CopyOnWriteHashMap> 关于CopyOnWrite容器的,但是它也有一些缺点: 内存占用问 ...