九、Spring中使用@Value和@PropertySource为属性赋值
首先回顾下在xml中我们是如何为spring的bean进行属性赋值呢?
大体是这样的
<bean id="person" class="com.atguigu.bean.Person" scope="prototype" ><property name="age" value="18"></property><property name="name" value="zhangsan"></property></bean>
这样就能够为person对象的age
和name
属性进行赋值。
那使用@Value注解怎么做呢?又如何取出配置文件中的值呢,就像取出jdbc.properties中的值一样。
public class Person {//使用@Value赋值;//1、基本数值//2、可以写SpEL; #{}//3、可以写${};取出配置文件【properties】中的值(在运行环境变量里面的值)@Value("张三")private String name;@Value("#{20-2}")private Integer age;@Value("${person.nickName}")private String nickName;// 省略了getter、setter等
}
配置类:
//使用@PropertySource读取外部配置文件中的k/v保存到运行的环境变量中;加载完外部的配置文件以后使用${}取出配置文件的值
@PropertySource(value={"classpath:/person.properties"})
@Configuration
public class MainConfigOfPropertyValues {@Beanpublic Person person(){return new Person();}}
写个测试方法测试一下:
public class IOCTest_PropertyValue {AnnotationConfigApplicationContext applicationContext = new AnnotationConfigApplicationContext(MainConfigOfPropertyValues.class);@Testpublic void test01(){printBeans(applicationContext);System.out.println("=============");Person person = (Person) applicationContext.getBean("person");System.out.println(person);ConfigurableEnvironment environment = applicationContext.getEnvironment();String property = environment.getProperty("person.nickName");System.out.println(property);applicationContext.close();}private void printBeans(AnnotationConfigApplicationContext applicationContext){String[] definitionNames = applicationContext.getBeanDefinitionNames();for (String name : definitionNames) {System.out.println(name);}}}
打印出结果:
mainConfigOfPropertyValues
person
=============
Person [name=张三, age=18, nickName=小李四]
小李四
这两个注解非常简单,@Value注解支持不仅支持简单赋值,还支持spring El表达式赋值,关于springEL表达式,可以参考这篇:springEL表达式
@PropertySource 就是导入外部的配置文件。
注意:在@Value中,使用springEL表达式使用#,引入配置文件中的值使用$,此文也有体现。
今天就这么多。
转载于:https://www.cnblogs.com/heliusKing/p/11396493.html
九、Spring中使用@Value和@PropertySource为属性赋值相关推荐
- 事务例子_Spring事务专题(四)Spring中事务的使用、抽象机制及模拟Spring事务实现...
Spring中事务的使用示例.属性及使用中可能出现的问题 前言 本专题大纲如下: 「对于专题大纲我又做了调整哈,主要是希望专题的内容能够更丰富,更加详细」,本来是想在源码分析的文章中附带讲一讲事务使用 ...
- Spring中的Bean配置
IOC&DI概述 OPC(Inversion of Control):其思想是反转资源获取的方向.传统的资源查找方式要求组件向容器发起请求查找资源.作为回应,容器适时的返回资源.而应用了IOC ...
- Spring中DI介绍
文章目录 Spring中DI介绍 一.基于XML配置注入依赖 1. 有参构造函数注入依赖 2. set方法注入依赖 3. 注入自定义类型 4. 注入集合类型 二.基于注解形式注入依赖 1. @Valu ...
- Spring初使用:使用Spring为对象的属性赋值
目录 为基本类型(及其包装类)属性赋值 通过xml配置文件的方式 使用Set方法赋值 使用有参构造方法赋值 通过注解的方式 使用 @Value 注解赋值 为引用类型属性赋值 指定赋值 使用Set方法赋 ...
- Spring框架—IOC容器—属性赋值的几种方式
目录 一.常用的赋值方式 1.1 set注入 1.1.1 ApplicationContext.xml配置文件 1.1.2 测试类: 1.1.2 控制台输出: 1.2 构造注入 1.2.1 修改Stu ...
- Spring中的九种设计模式
一. 简单工厂 又叫做静态工厂方法(StaticFactory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类. ...
- 九种设计模式在Spring中的应用
Spring中涉及的设计模式总结 1.简单工厂(非23种设计模式中的一种) 实现方式: BeanFactory.Spring中的BeanFactory就是简单工厂模式的体现,根据传入一个唯一的标识来获 ...
- 详解设计模式在Spring中的应用
设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆. 今天,螃蟹在IT学习者网站就设计模式的内在价值做一番探讨,并以spring为例进行讲解,只有领略了 ...
- 这些Spring中的设计模式,你都知道吗?
来自: itxxz.com/a/javashili/tuozhan/2014/0601/7.html 设计模式作为工作学习中的枕边书,却时常处于勤说不用的尴尬境地,也不是我们时常忘记,只是一直没有记忆 ...
最新文章
- 魔法引用函数magic_quotes_gpc和magic_quotes_runtime的区别和用法
- java中哈夫曼编码所用的函数_数据结构(java语言描述)哈夫曼编码
- mysql是如何管理数据_【MySQL】如何管理数据库
- linux Rootkit:x86与ARM的内联内核函数Hooking
- 反转链表 IIPython解法
- Xlua文件在热更新中调用方法
- 接口文档下的渗透测试(Swagger)
- mysql缓存怎么防止缓存击穿_带你搞明白什么是缓存穿透、缓存击穿、缓存雪崩...
- caffe+CPU︱虚拟机+Ubuntu16.04+CPU+caffe安装笔记
- 如何防范和应对Redis勒索,腾讯云教你出招
- 如何设置Mac定时重启
- echart 最小值_EchartJS平均线、最大值、最小值
- java爬虫搜狗微信_搜狗微信公众号文章抓取
- 【免费域名】freenom免费申请域名步骤
- 签约新闻 | 出版发行行业又一位老牌企业的数字化转型,扬帆起航!
- WebRTC源码中turnserver的使用方法
- 郭敬明道歉承认作品抄袭:如何维护互联网作品版权信息
- mosquitto服务器搭建及配置
- 有瓶颈设备的多级生产计划问题
- 【CS231n】十五、深度学习的高效算法和硬件设计
热门文章
- 《是碰巧还是执着?python所阅读的每一场知识点,唯一的共同点就是——参赛选手中,有详解Python的装饰器!》
- git 查看代码量_学会这三个命令,你就不再是git只会用三板斧的菜鸟了
- keil 快捷键_KEIL 那些编辑技巧与方法
- 收藏 | 从头训练深度监督目标检测
- php内支持sqlite,PHP能不能和sqlite搭配
- 决策树随笔-深度AI科普团队
- 数据部门如何All In AI
- 计算机考试的基础知识高考,计算机考试基础知识试题..doc
- 电梯管理php,写字楼物业电梯管理规定
- 提高网站性能的常见方法