目录

  • 一、使用 @Value 读取注入值

    • 1、注入普通值
    • 2、注入 Map
    • 3、注入数组
    • 4、注入 List
    • 5、注意事项
  • 二、使用 @ConfigurationProperties 读取
    • 1、注入普通值
    • 2、注入 Map
    • 3、注入数组和 List
    • 4、注入对象
    • 5、注意事项

一、使用 @Value 读取注入值


1、注入普通值

Yaml 配置文件:

user:username: Andypassword: 123456

Java 代码注入:

@Data
@Component
public class UserProperties {@Value("${user.username}")private String username;@Value("${user.password}")private String password;}

默认值:

如果要注入的配置不存在时,就会报错,这时,我们可以为要注入的配置提供一个默认值:

@Data
@Component
public class UserProperties {@Value("${user.password:123456}")private String password;}

默认值的使用方法为:在需要读取的配置名称后面添加 : ,然后紧跟默认值。

2、注入 Map

Yaml 配置文件:

user:account: "{username: 'Andy', password: '123456'}"

Java 代码注入:

@Data
@Component
public class UserProperties {@Value("#{${user.account}}")private Map<String, String> account;}

注意: Yaml 配置文件中的 map 值需要使用 "" 包裹起来,里面的 value 值如果是字符串可以使用 '' 括起来。

3、注入数组

Yaml 配置文件:

user:list: Andy,Bob,Marry

Java 代码注入:

@Data
@Component
public class UserProperties {@Value("${user.list}")private String[] list;}

注意: 数组默认自动以 , 分隔值列表。

4、注入 List

Yaml 配置文件:

user:list: Andy,Bob,Marry

Java 代码注入:

@Data
@Component
public class UserProperties {@Value("${user.list}")private List<String> list;}

注意: List 默认自动以 , 分隔值列表,如果需要使用其他分隔符的话,就需要使用 SPEL 表达式进行注入了:

Yaml 配置文件:

user:list: Andy|Bob|Marry

Java 代码注入:

@Data
@Component
public class UserProperties {@Value("#{'${user.list}'.split('\\|')}")private List<String> list;}

5、注意事项

  • 1、@Value 修饰的变量不能是 finalstatic 类型;
  • 2、类要交给 Spring 管理,可以使用 @Component 修饰所在的类;
  • 3、使用时,不能通过 new 来构建这个类,需要使用 @Autowired 来注入。

二、使用 @ConfigurationProperties 读取注入值


1、注入普通值

Yaml 配置文件:

user:username: Andypassword: 123456

Java 代码注入:

@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserProperties {private String username;private String password;}

注意: 变量名称需要和配置文件的配置名称对应。

2、注入 Map

Yaml 配置文件:

user:map: {username: 'Andy', password: '123456'}

Java 代码注入:

@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserProperties {private Map<String, String> map;}

注意: 配置文件中的 map 值不能使用 "" 进行包括(可以和 @Value 做对比)。

3、注入数组和 List

Yaml 配置文件:

user:list:- Andy- Bob- Marry

Java 代码注入数组:

@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserProperties {private String[] list;}

注入 List 和注入数组类似,将数组类型更改为 List 类型即可:

@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserProperties {private List<String> list;}

4、注入对象

Yaml 配置文件:

user:username: Andypassword: 123456info:age: 18sex: man

Java 代码注入:

@Data
@Component
@ConfigurationProperties(prefix = "user")
public class UserProperties {private String username;private String password;@NestedConfigurationPropertyprivate Information info;@Getter@Setterpublic static class Information {private Integer age;private String sex;}}

注意:

  • 对象的注入只需要变量名称和配置文件中的配置名称对应即可,对象的类名随意;
  • 对象的注入可以使用 @NestedConfigurationProperty 注解表明改属性是内嵌的对象属性,但并不是必须的,可用可无,即使没有可以注入进去。

5、注意事项

  • 想要 @ConfigurationProperties 注解生效,需要在配置类中添加 @Component 注解,将其添加到 SpringBean 容器管理当中,并且属性类需要在 @SpringBootApplication 注解的包扫描路径当中 scanBasePackages = { "xxxx"}
  • 如果不使用 @Component 注解的话,就需要在启动类中添加 @EnableConfigurationProperties 注解,然后将配置类的类名添加进去:@EnableConfigurationProperties({xxx.class})

【Java开发】之配置文件的读取相关推荐

  1. java开发eclipse配置文件_配置eclipse开发环境

    一.下载安装包 1.下载jdk 1.7 32位 2.下载tomcat 7.0 3.下载eclipse 免费版 1) 可以使用免费的Eclipse官方网站(http://www.eclipse.org) ...

  2. java 开发环境配置文件_Java 开发环境配置

    在本章节中我们将为大家介绍如何搭建Java开发环境.Windows 上安装开发环境 Linux 上安装开发环境 安装 Eclipse 运行 Java window系统安装java 下载JDK 首先我们 ...

  3. Java开发基础——配置文件的写入与读取

    在实际的项目开发中,配置文件是一个非常重要的工具,我们可以把全局的配置写入文件,然后在需要的时候再取出来.且在项目的任何位置都可以使用,非常方便.可以把配置文件理解为一个临时性的数据库.在IDEA中, ...

  4. java 监听配置文件_java读取系统Properties配置文件利用线程实时监控配置文件变化...

    package util; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundExcept ...

  5. java加载配置文件_Java 读取配置文件的五种方式

    方式一:采用ServletContext读取,读取配置文件的realpath,然后通过文件流读取出来. 因为是用ServletContext读取文件路径,所以配置文件可以放入在WEB-INF的clas ...

  6. java加载配置文件_java 读取和修改配置文件

    1.读取配置文件 try{ File f=new File("D:\\myfile.text"); Properties pp=new Properties(); FileInpu ...

  7. nfc读卡java开发,Android通过NFC读取IC卡示例

    [实例简介] Android通过NFC读取IC卡示例,包含读取.写入. [实例截图] [核心代码] nfc_demo └── nfc_demo ├── app │   ├── app.iml │   ...

  8. java下mysql连接配置文件_Java读取.properties配置文件并连接数据库

    1.读取配置文件 //Properties集合 流对象读取键值对 public static void getNum() throws Exception { Properties p=new Pro ...

  9. java property xml,Java开发中读取XML与properties配置文件的方法

    相关阅读: 1. XML文件: 什么是XML?XML一般是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 2.XML文件的优点: 1)XML文档内容和结构完 ...

  10. java读取mysql数据库配置文件_java读取properties文件的方法

    Java 读写Properties配置文件 Java 读写Properties配置文件 1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实 ...

最新文章

  1. 知识产权基础(上、下)
  2. 从“小”培养AI安全意识:OpenAI开源最新强化学习训练工具,安全约束自由定制,开箱即用...
  3. java list 替换 多线程_Java多线程处理List数据
  4. 数据不一致问题排查1
  5. ft232r usb uart驱动 win7_新电脑想装WIN7,技术员让装WIN10,不是忽悠你,是有原因的...
  6. 腾讯校园招聘面试的秘密
  7. mysql 回滚失败_Mysql非事务表回滚失败的现象
  8. 蓝军HVV实用工具和网站总结
  9. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”
  10. 《Linux命令行与shell脚本编程大全 第3版》Shell脚本编程基础---05
  11. ASP.NET留言板 文字加表情
  12. 输入一个整数,计算它各位上数字的和。(注意:是任意位的整数)
  13. c51语言自定义头文件,C51语言头文件包括的内容有
  14. 基于pyqt5的Demo软件开发
  15. 直流电机控制原理与TB6612FNG(初识编码器)
  16. html 图片加载 占位,css实现图片未加载完成时占位显示
  17. 微信小程序 MinUI 组件库系列之 avatar 头像组件
  18. 计算广告学习笔记1.2 广告的基础知识-广告的有效性模型
  19. Python基础知识笔记
  20. 以前写过的ajax基础案例(王欢-huanhuan)

热门文章

  1. jave-1.0.2.jar
  2. 10部程序员必看的纪录片
  3. 2020年最新人事管理软件排名(建议收藏)!
  4. 使用联想恢复盘安装正版Win7 Professional
  5. 故障:OfficeScan Server 中的 DbServer.exe 占用 CPU 过高
  6. 《Android框架揭秘》——2.5节应用程序Framework源码级别调试
  7. Windows 修改注册表实现键位修改
  8. Protel 99SE详细安装教程(附安装包)
  9. XcodeGhost简单查看
  10. 二叉树遍历之先序遍历算法(非递归、递归)入门详解