Spring注解学习_属性赋值_@Value&@PropertySource

  1. @Value
  2. @PropertySource

@Value

可以用@Value给Bean的属性赋值,这个注解对应于原来xml中标签里的value字段:

<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);
    }
}

image-20200402230312244

总结:使用@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引入配置文件

image-20200402232622746

可以看到,这个注解中将传入一个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;
}

运行刚才的测试:

image-20200402233742672

此外,在运行时也可以从容器中取到配置文件信息:

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/
目录
×

喜欢就点赞,疼爱就打赏