Spring注解学习_属性赋值_@Value&@PropertySource
¶@Value
可以用@Value给Bean的属性赋值,这个注解对应于原来xml中
<bean id="person" class="com.study.bean.Person">
<property name="age" value="18"/>
<property name="name" value="张三" />
</bean>
直接在Person中打上Bean注解,可免去以上xml配置:
@Data
public class Person {
@Value("张三")
private String name;
@Value("#{20-2}") // SpEL表达式
private Integer age;
}
测试一下:
public class IOCTest_PropertyValue {
@Test
public void test1(){
AnnotationConfigApplicationContext context =
new AnnotationConfigApplicationContext(MyConfigOfPropertyValue.class);
Person person = context.getBean("person", Person.class);
System.out.println(person);
}
}
总结:使用@Value赋值,可以写
- 基本数值
- SpEL:#{ }
- ${ }:取出配置文件中的值(运行环境变量中的值)
¶@PropertySource
@PropertySource:加载指定配置文件
resource目录下新建peroson.properties:
person.nickname="小张"
按照xml配置,如果我们想为bean属性赋xml中的值,应当在xml中标上配置文件位置:
<context:property-placeholder location="classpath:person.properties"/>
<bean id="person" class="com.study.bean.Person">
<property name="age" value="18"/>
<property name="name" value="张三" />
</bean>
现在改用@PropertySource引入配置文件
可以看到,这个注解中将传入一个value数组,其元素内容为配置文件路径,如
“classpath:/com/myco/app.properties” or @code “file:/path/to/file.xml”
//使用PropertySource加载外部配置文件中的kv保存到运行时环境变量,加载完外部配置文件后使用${}取出配置文件的值
@PropertySource(value = {"classpath:/person.properties"})
@Configuration
public class MyConfigOfPropertyValue {
@Bean
public Person person(){
return new Person();
}
}
Person类:
@Data
public class Person {
@Value("张三")
private String name;
@Value("#{20-2}")
private Integer age;
@Value("${person.nickname}")
private String nickname;
}
运行刚才的测试:
此外,在运行时也可以从容器中取到配置文件信息:
ConfigurableEnvironment environment = context.getEnvironment();
String property = environment.getProperty("person.nickname");
System.out.println(property); //小张
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达,邮件至 708801794@qq.com
文章标题:Spring注解学习_属性赋值_@Value&@PropertySource
文章字数:467
本文作者:梅罢葛
发布时间:2020-04-02, 22:53:37
最后更新:2020-04-02, 23:48:58
原始链接:https://qiurungeng.github.io/2020/04/02/Spring%E6%B3%A8%E8%A7%A3%E5%AD%A6%E4%B9%A0-%E5%B1%9E%E6%80%A7%E8%B5%8B%E5%80%BC-Value-PropertySource/