测试的环境: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读取自定义外部属性的更多相关文章

  1. (C)spring boot读取自定义配置文件时乱码解决办法

    这是入门的第三天了,从简单的hello spring开始,已经慢慢接近web的样子.接下来当然是读取简单的对象属性了. 于是按照网上各位大神教的,简单写了个对象book,如上一篇(B),其他配置不需要 ...

  2. spring boot读取自定义配置文件时乱码解决办法

    @PropertySource(value = "classpath:book.yml", ignoreResourceNotFound = true,encoding = &qu ...

  3. Spring Boot 支持多种外部配置方式

    Spring Boot 支持多种外部配置方式 http://blog.csdn.net/isea533/article/details/50281151 这些方式优先级如下: 命令行参数 来自java ...

  4. Android读取自定义View属性

    Android读取自定义View属性 attrs.xml : <?xml version="1.0" encoding="utf-8"?> < ...

  5. Spring boot 使用@Value注入属性

    Spring boot 使用@Value注入属性 学习了:http://blog.csdn.net/hry2015/article/details/72353994 如果启动的时候报错: spring ...

  6. Spring Boot2 系列教程(十八)Spring Boot 中自定义 SpringMVC 配置

    用过 Spring Boot 的小伙伴都知道,我们只需要在项目中引入 spring-boot-starter-web 依赖,SpringMVC 的一整套东西就会自动给我们配置好,但是,真实的项目环境比 ...

  7. spring boot 读取配置文件(application.yml)中的属性值

    在spring boot中,简单几步,读取配置文件(application.yml)中各种不同类型的属性值: 1.引入依赖: <!-- 支持 @ConfigurationProperties 注 ...

  8. Spring Boot实践——用外部配置填充Bean属性的几种方法

    引用:https://blog.csdn.net/qq_17586821/article/details/79802320 spring boot允许我们把配置信息外部化.由此,我们就可以在不同的环境 ...

  9. 日志配置文件读取spring boot配置文件中的属性

    如果是读取 application.properties 这种spring boot的默认配置文件时 其中 scope固定为context  指明从上下文中获取, name 根据自己的意思给, sou ...

随机推荐

  1. 四、MYSQL数据练习题

    我的MYSQL版本是mysql-5.7.24-winx64,每天练习5道习题. 如果有错误或者更优的解决方法,欢迎大家指出,谢谢!! 一.测试表格 --1.学生表Student(Sid,Sname,S ...

  2. Python数据分析入门(六):Pandas的函数应用

    apply和applymap 1. 可直接使用NumPy的函数 示例代码: # Numpy ufunc 函数 df = pd.DataFrame(np.random.randn(5,4) - 1) p ...

  3. 删除文件--rm

    rm file         删除文件 rm -r dir      删除指定文件夹及文件夹下的所有内容 rm -rf dir     强制删除指定文件夹及文件夹下的所有内容

  4. django+x-admin管理后台模板开发管理后台案例(设计部分)

    使用django+x-admin管理后台模板搭建管理后台 一.环境需求 1.django:3.1 2.python:3.7 3.x-admin:2.2 4.pycharm:2020.3.2 5.ubu ...

  5. Unity2D项目-平台、解谜、战斗! 1.1战斗底层组件CanFight-CanBeFighted

    各位看官老爷们,这里是RuaiRuai工作室,一个做单机游戏的兴趣作坊. 本文对该2D项目中战斗底层组件的开发及设计思路做一个总结,希望各路同行多多交流,各路大佬多多指点. 实例特征分析 首先对于各个 ...

  6. 用递归求n皇后问题

    此问题是指在n*n的国际象棋棋盘上 ,放置n个皇后,使得这n个皇后均不在,同一行,同一列,同一对角线上,求出合法的方案的数目. 本题可以简单转化为就是求n的全排列中的数放在棋盘上使得这几组数,符合均不 ...

  7. gdb常用命令(转)

    pwn常常会用到gdb,看到一篇不错的文章,记录了很多命令:https://www.jianshu.com/p/c3e5f5972b21 gdb 基础调试命令 s step,si步入 n 执行下一条指 ...

  8. JavaScript课程——Day01

    1.网页由三部分组成: 1.1.HTML:超文本标记语言,专门编写网页内容的语言.(结构) 1.2.CSS:层叠样式表.(样式) 1.3.javaScript:网页交互的解释性脚本语言,专门编写客户端 ...

  9. 在Linux CentOS上搭建Jmeter压测环境

    本文的主要内容是介绍如何在Linux CentOS 服务器上面搭建Jmeter的压测环境整个详细的流程,来满足我们日常工作中对于压力测试环境搭建.压力测试执行过程的需求. 一.首先我们要准备四个东西, ...

  10. Day09_47_Map

    Map 集合 Map集合** 继承关系** <interface>: Map(接口)<---HashMap(class)/HashTable(class)/SortedMap(子接口 ...