使用@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进行属性注入的更多相关文章

  1. 【Spring注解驱动开发】如何使用@Value注解为bean的属性赋值,我们一起吊打面试官!

    写在前面 在之前的文章中,我们探讨了如何向Spring的IOC容器中注册bean组件,讲解了有关bean组件的生命周期的知识.今天,我们就来一起聊聊@Value注解的用法. 项目工程源码已经提交到Gi ...

  2. 使用spring注解——定义bean和自动注入

    对于java bean的定义和依赖配置,使用xml文件真心是不方便. 今天学习如何用注解,解决bean的定义和注入. 常用注解: 1.自动注入:@Resources,@Autowired 2.Bean ...

  3. day38 17-Spring的Bean的属性注入:注解方式

    这个类已经可以由Spring控制反转了,那么属性呢?属性分为普通属性和对象属性两部分. JSR是一个组织,和W3C一样是定义一些标准的.它里面也定义了一歌注解,Spring对这个注解也是支持的.其实这 ...

  4. spring的bean的属性注入

    一.设置注入 设置注入要求: 要求属性在实体类中必须有getter 和setter方法,然后在spring的工厂中就可以使用property标签进行设值注入. 二.构造注入 通过类的构造方法的方式注入 ...

  5. Spring之使用注解实例化Bean并注入属性

    1.准备工作 (1)导入jar包 除了上篇文章使用到的基本jar包外,还得加入aop的jar包,所有jar包如下 所需jar包 (2)配置xml <?xml version="1.0& ...

  6. spring中bean配置和注入场景分析

    bean与spring容器的关系 Bean配置信息定义了Bean的实现及依赖关系,Spring容器根据各种形式的Bean配置信息在容器内部建立Bean定义注册表,然后根据注册表加载.实例化Bean,并 ...

  7. Spring笔记②--各种属性注入

    Ioc 反转控制 反转资源获取的方向 分离接口与实现 采用工厂模式 采用反转控制   Di 依赖注入 依赖容器把资源注入   配置bean 通过全类名(反射) 配置形式:基于xml方式 Ioc容器的b ...

  8. Spring之属性注入

    时间:2017-1-31 23:38 --Bean的属性注入方式有三种注入方式:    1)接口注入:        定义一个接口,定义setName(String name)方法,定义一个类,实现该 ...

  9. 【初识Spring】对象(Bean)实例化及属性注入(注解方式)

    通过xml的方式进行对象的实列化或属性注入或许有一些繁琐,所以在开发中常用的方式更多是通过注解的方式实现对象实例化和属性注入的. 开始之前 1.导入相关的包(除了导入基本的包还要导入aop的包): 创 ...

随机推荐

  1. activemq高可用

    这里是基于 zookeeper 选举方式实现的集群配置,服务器过半数才可提供服务,所以是2n+1台这里以三台为例. 只有master节点能提供服务,slave节点无法提供服务,只有当master节点挂 ...

  2. 封装class类--不分割类名

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  3. ssm中web配置各框架的配置文件路径方式

    一.在web文件中配置 使用逗号隔开 二.在applicationContext.xml文件中配置或引用 以下是引用方式 注: <import />标签要放在所有bean配置的最前面.  

  4. 用户在浏览器输入URL或者跳转到一个URL后发生了什么

    一.从URL到页面渲染的整个过程1)处理用户输入2)开始导航3)读取响应4)查找渲染进程5)确认导航6)渲染页面 二.每一步做了哪些事情 1)处理用户的输入 浏览器的UI 线程处理用户的输入,判断是跳 ...

  5. Linux 下安装中文字体

    本文以安装黑体为例,简单演示如何在Linux下安装中文字体. 环境信息介绍 [root@thatsit ~]# cat /etc/redhat-release CentOS Linux release ...

  6. 牛客练习赛33 E tokitsukaze and Similar String (字符串哈希hash)

    链接:https://ac.nowcoder.com/acm/contest/308/E 来源:牛客网 tokitsukaze and Similar String 时间限制:C/C++ 2秒,其他语 ...

  7. CF 937

    A #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) #def ...

  8. Django【第20篇】:Ajax

    初始Ajax 一.Ajax准备知识:json 说起json,我们大家都了解,就是python中的json模块,那么json模块具体是什么呢?那我们现在详细的来说明一下 1.json(Javascrip ...

  9. B1011. A+B 和 C

    题目描述 给定区间[-2^63, 2^63]内的三个整数A.B 和 C,请判断A+B是否大于C 输入格式 第一行给出正整数T(≤10),即测试用例的个数.随后给出T组测试用例,每组占一行,顺序给出A. ...

  10. zrender笔记----(数字Number组件)出现的问题和解决办法

    1.期望的效果是这样子的(这也是最终结果): 2.开始是用json假数据,开始没考虑null的问题,导致在判断传值处,判断有误. 导致在对接接口时,凌乱了,后来修改了下变成后面图C的逻辑,json数据 ...