首页 > 其他 > 详细

使用@Value注解对bean进行属性注入

时间:2019-04-09 23:33:59      阅读:213      评论:0      收藏:0      [点我收藏+]

使用@Value注解,可以有三种属性注入的方式:

1. 使用字面量注入

2. 使用EL表达式注入

3. 使用占位符注入

import org.springframework.beans.factory.annotation.Value;

public class Bottle {

    //使用字面量注入属性
    @Value(value = "red")
    private String color;

    //使用el表达式注入属性
    @Value(value = "#{30 / 3.14}")
    private double diameter;

    //使用占位符注入属性,需要在容器中引入配置文件
    @Value(value = "${bottle.source}")
    private String source;

    ……
    
}

 

如果在占位符中引入配置文件中的值,必须在容器中声明配置文件的位置,可以使用@PropertySource注解

/**
 * 配置类,使用@Value注解进行属性注入
 * 引入配置文件
 */
@Configuration
@PropertySource(value = {"classpath:/config.properties"})
public class BeanConfig {

    //使用无参构造器注册Bottle
    @Bean(value = "bottle")
    @Scope("singleton")
    public Bottle bottle() {
        return new Bottle();
    }
}

 

这样,从容器中获取的bean对象就会被注入color、diameter、source属性。

    @Test
    public void test() {
        //创建容器
        ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ValueBeanConfig.class);
        //从容器中获取Bottle实例
        Bottle bottle = (Bottle) applicationContext.getBean("bottle");
        //控制台输出
        System.out.println(bottle.toString());
        //关闭容器
        ((AnnotationConfigApplicationContext)applicationContext).registerShutdownHook();
    }

测试结果:

Bottle{color=‘red‘, diameter=9.554140127388534, source=‘laboratory‘}

 

如果容器中声明了配置文件的位置,还可以使用环境变量获取其中的值

bottle.source=laboratory
bottle.size=1599
bottle.nickname=frankie
//创建容器
ApplicationContext applicationContext = new AnnotationConfigApplicationContext(ValueBeanConfig.class);
//从容器中获取环境变量
Environment environment = applicationContext.getEnvironment();
String source = environment.getProperty("bottle.source");

 

使用@Value注解对bean进行属性注入

原文:https://www.cnblogs.com/dubhlinn/p/10680552.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!