SpringBoot系列之@PropertySource用法简介

继上篇博客:SpringBoot系列之@Value和@ConfigurationProperties用法对比之后,本博客继续介绍一下@PropertySource注解的用法,通过上一篇博客的知识,可以知道@Value和@ConfigurationProperties都可以用于获取配置文件的属性值,不过有个细节容易被忽略,那就是,这两个注解在Springboot项目中都是获取默认配置文件的属性值,也就是application.yml或者application.properties的属性值

不过我们想要配属性的话,肯定都不能全都往默认配置文件里堆的,如果想引用其它配置文件的属性值,就可以使用本博客介绍的@PropertySource注解

新建一个user.properties的配置文件:

user.userName= root
user.isAdmin= true
user.regTime= 2019/11/01
user.isOnline= 1
user.maps.k1=v1
user.maps.k2=v2
user.lists=list1,list2
user.address.tel= 15899988899
user.address.name=上海

使用@PropertySource("classpath:user.properties")获取对应的properties文件,再用@ConfigurationProperties(prefix = "user")进行属性映射

package org.muses.jeeplatform.bean;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.PropertySource;
import org.springframework.stereotype.Component; import java.util.Date;
import java.util.List;
import java.util.Map; @Component
@PropertySource("classpath:user.properties")
@ConfigurationProperties(prefix = "user")
public class User { private String userName;
private boolean isAdmin;
private Date regTime;
private Long isOnline;
private Map<String,Object> maps;
private List<Object> lists;
private Address address; @Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", isAdmin=" + isAdmin +
", regTime=" + regTime +
", isOnline=" + isOnline +
", maps=" + maps +
", lists=" + lists +
", address=" + address +
'}';
} public String getUserName() {
return userName;
} public void setUserName(String userName) {
this.userName = userName;
} public boolean isAdmin() {
return isAdmin;
} public void setAdmin(boolean admin) {
isAdmin = admin;
} public Date getRegTime() {
return regTime;
} public void setRegTime(Date regTime) {
this.regTime = regTime;
} public Long getIsOnline() {
return isOnline;
} public void setIsOnline(Long isOnline) {
this.isOnline = isOnline;
} public Map<String, Object> getMaps() {
return maps;
} public void setMaps(Map<String, Object> maps) {
this.maps = maps;
} public List<Object> getLists() {
return lists;
} public void setLists(List<Object> lists) {
this.lists = lists;
} public Address getAddress() {
return address;
} public void setAddress(Address address) {
this.address = address;
}
}

对应的Address类:

package org.muses.jeeplatform.bean;

/**
* <pre>
*
* </pre>
*
* @author nicky
* <pre>
* 修改记录
* 修改后版本: 修改人: 修改日期: 2019年11月03日 修改内容:
* </pre>
*/
public class Address {
private String tel;
private String name; @Override
public String toString() {
return "Address{" +
"tel='" + tel + '\'' +
", name='" + name + '\'' +
'}';
} public String getTel() {
return tel;
} public void setTel(String tel) {
this.tel = tel;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
}
}

写一个junit测试类

package org.muses.jeeplatform;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.muses.jeeplatform.bean.User;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class)
@org.springframework.boot.test.context.SpringBootTest
public class SpringBootTest { @Autowired
User user; @Test
public void testConfigurationProperties(){
System.out.println(user);
} }

读取成功,就不用将配置写在默认的application.properties里了

User{userName='root', isAdmin=false, regTime=Fri Nov 01 00:00:00 CST 2019, isOnline=1, maps={k1=v1, k2=v2}, lists=[list1, list2], address=Address{tel='15899988899', name='上海市'}}

注意:对于@PropertySource注解,默认是不支持yml配置文件读取的,需要修改重写才可以

最新文章

  1. pythonchallenge 解谜 Level 2
  2. 浅谈web语义化
  3. maven 手动安装jar到仓库的命令
  4. Java AES加密
  5. bug_ _java.lang.IllegalArgumentException: View not attached to window manager 2
  6. zookeeper 客户端编程
  7. iOS KVC setValuesForKeysWithDictionary的使用
  8. dev 中的GridControl中的行实现选择的功能实现
  9. 用Java 实现一个表中的数据复制到另一个表中
  10. awk 字符串处理函数
  11. JS基础:this的指向以及call、apply的作用
  12. spring 总结
  13. 4.App非功能测试总结
  14. Windows开发之VC++仿QQ迷你首页(迷你资讯)
  15. Python获取当前年月日
  16. 2018年9月22日CCPC吉林站参赛总结
  17. Date 当前程序日期格式 参数设置 DecimalSeparator
  18. scrapy之中间件
  19. “全栈2019”Java第四十七章:继承与方法
  20. VM虚拟机,Linux系统安装tools过程遇到 what is the location of the “ifconfig” program

热门文章

  1. CentOS7 如何升级Git
  2. Appium新版本遇到的问题,不能通过 name 去定位元素抛 Message: Locator Strategy &#39;name&#39; is not supported for this session
  3. 【测试基础】App测试要点总结
  4. 08. Go 语言包(package)
  5. 我想外包开发一个APP,需要多少钱,多少时间?
  6. java调用py文件传参执行
  7. Ubuntu16.04VIM无法补全错误记录
  8. 禧云Redis跨机房双向同步实践
  9. jvm虚拟机笔记&lt;五&gt; 编译期优化
  10. Web前端基础(13):JavaScript(七)