@Value注入

不通过配置文件的注入属性的情况

通过@Value将外部的值动态注入到Bean中,使用的情况有:

  • 注入普通字符串
  • 注入操作系统属性
  • 注入表达式结果
  • 注入其他Bean属性:注入beanInject对象的属性another
  • 注入文件资源
  • 注入URL资源

    详细代码见:

   @Value("normal")
private String normal; // 注入普通字符串 @Value("#{systemProperties['os.name']}")
private String systemPropertiesName; // 注入操作系统属性 @Value("#{ T(java.lang.Math).random() * 100.0 }")
private double randomNumber; //注入表达式结果 @Value("#{beanInject.another}")
private String fromAnotherBean; // 注入其他Bean属性:注入beanInject对象的属性another,类具体定义见下面 @Value("classpath:com/hry/spring/configinject/config.txt")
private Resource resourceFile; // 注入文件资源 @Value("http://www.baidu.com")
private Resource testUrl; // 注入URL资源

注入其他Bean属性:注入beanInject对象的属性another

@Component
public class BeanInject {
@Value("其他Bean的属性")
private String another; public String getAnother() {
return another;
} public void setAnother(String another) {
this.another = another;
}
}

通过配置文件的注入属性的情况

通过@Value将外部配置文件的值动态注入到Bean中。配置文件主要有两类:

  • application.properties。application.properties在spring boot启动时默认加载此文件
  • 自定义属性文件。自定义属性文件通过@PropertySource加载。@PropertySource可以同时加载多个文件,也可以加载单个文件。如果相同第一个属性文件和第二属性文件存在相同key,则最后一个属性文件里的key启作用。加载文件的路径也可以配置变量,如下文的${anotherfile.configinject},此值定义在第一个属性文件config.properties

第一个属性文件config.properties内容如下: 
${anotherfile.configinject}作为第二个属性文件加载路径的变量值

book.name=bookName
anotherfile.configinject=placeholder

第二个属性文件config_placeholder.properties内容如下:

book.name.placeholder=bookNamePlaceholder

下面通过@Value(“${app.name}”)语法将属性文件的值注入bean属性值,详细代码见:

@Component
// 引入外部配置文件组:${app.configinject}的值来自config.properties。
// 如果相同
@PropertySource({"classpath:com/hry/spring/configinject/config.properties",
"classpath:com/hry/spring/configinject/config_${anotherfile.configinject}.properties"})
public class ConfigurationFileInject{
@Value("${app.name}")
private String appName; // 这里的值来自application.properties,spring boot启动时默认加载此文件 @Value("${book.name}")
private String bookName; // 注入第一个配置外部文件属性 @Value("${book.name.placeholder}")
private String bookNamePlaceholder; // 注入第二个配置外部文件属性 @Autowired
private Environment env; // 注入环境变量对象,存储注入的属性值 public String toString(){
StringBuilder sb = new StringBuilder();
sb.append("bookName=").append(bookName).append("\r\n")
.append("bookNamePlaceholder=").append(bookNamePlaceholder).append("\r\n")
.append("appName=").append(appName).append("\r\n")
.append("env=").append(env).append("\r\n")
// 从eniroment中获取属性值
.append("env=").append(env.getProperty("book.name.placeholder")).append("\r\n");
return sb.toString();
}
}

来源:https://blog.csdn.net/hry2015/article/details/72353994

最新文章

  1. 轻量级ORM框架——第一篇:Dapper快速学习
  2. Hexo静态博客搭建教程
  3. Git:Git初体验——Git安装配置
  4. 网站指纹识别工具——WhatWeb v0.4.7发布
  5. 编译器角度看C++复制构造函数
  6. 06Spring_使用注解配置bean对象
  7. Servlet复习1: 一个简单的Servlet的使用
  8. 文件的输出与载入之java操作
  9. RGB颜色二值化
  10. 【原创】 Shuffling
  11. PHP中 magic_quotes_gpc 和 magic_quotes_runtime 区别及其反斜线转义问题
  12. 新建maven工程时pom.xml报错
  13. 孤立的SQL用户
  14. C语言_指针变量的赋值与运算,很详细
  15. 9th week blog
  16. docker 创建私有仓库
  17. STL:unique()函数
  18. 分数拆分(Fractions Again?!, UVa 10976)
  19. vs2010开发环境恢复--(mysql,数据文件可直接拷贝,并可用navicat直接管理)
  20. Windows下查询指定端口进程,并杀死

热门文章

  1. TableLayout表格布局
  2. 链接hdf5库出现错误的解决办法
  3. echarts的一些基础笔记
  4. Linux运维完全小白入门指南
  5. framework7使用问题汇总
  6. 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
  7. sdut 5-1 继承和派生
  8. 关于Qt的事件循环以及QEventLoop的简单使用(QEventLoop::quit()能够终止事件循环,事件循环是可以嵌套的)
  9. WM_SIZE后于WM_CREATE消息!!在窗口被创建时的顺序!
  10. javascript真假(true/false)值