spring之@Value详解(转载)
2024-08-24 23:07:48
@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
最新文章
- 轻量级ORM框架——第一篇:Dapper快速学习
- Hexo静态博客搭建教程
- Git:Git初体验——Git安装配置
- 网站指纹识别工具——WhatWeb v0.4.7发布
- 编译器角度看C++复制构造函数
- 06Spring_使用注解配置bean对象
- Servlet复习1: 一个简单的Servlet的使用
- 文件的输出与载入之java操作
- RGB颜色二值化
- 【原创】 Shuffling
- PHP中 magic_quotes_gpc 和 magic_quotes_runtime 区别及其反斜线转义问题
- 新建maven工程时pom.xml报错
- 孤立的SQL用户
- C语言_指针变量的赋值与运算,很详细
- 9th week blog
- docker 创建私有仓库
- STL:unique()函数
- 分数拆分(Fractions Again?!, UVa 10976)
- vs2010开发环境恢复--(mysql,数据文件可直接拷贝,并可用navicat直接管理)
- Windows下查询指定端口进程,并杀死
热门文章
- TableLayout表格布局
- 链接hdf5库出现错误的解决办法
- echarts的一些基础笔记
- Linux运维完全小白入门指南
- framework7使用问题汇总
- 微信小程序开发之从相册获取图片 使用相机拍照 本地图片上传
- sdut 5-1 继承和派生
- 关于Qt的事件循环以及QEventLoop的简单使用(QEventLoop::quit()能够终止事件循环,事件循环是可以嵌套的)
- WM_SIZE后于WM_CREATE消息!!在窗口被创建时的顺序!
- javascript真假(true/false)值