在Spring的工作开发中,我们经常使用的是 @Value 注解,来实现bean的属性注入,使用@Value注解总计有三种方式来注入值:
- 直接赋值
- EL表达式
- Properties配置
下面的代码展示了,这三种方式的使用示例
为了延时Properties的使用,这里需要创建一个简单的
.properties配置文件,放置于resources目录下person.nickName=燕归来兮
在配置类上注入对象,添加Properties源类,注意,如果出现中文 乱码,可以使用
encoding = "UTF-8"的形式指定编码@PropertySource(value = "classpath:/person.properties",encoding = "UTF-8")
创建一个Bean对象,下面以Person为演示对象,展示三种方式的使用
Person对象暂时未实现setter/getter 方法,请手动添加这些属性的的setter/getter方法
public class Person {// 注入方式: Properties 注入@Value("${person.name}")private String name;// 注入方式: Properties 注入@Value("${person.nickName}")private String nickName;// 注入方式: EL 表达式注入@Value("#{18 + 8 * 2 -9}")private Integer age;// 注入方式: 直接注入@Value("安徽省芜湖市")private String address;@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", nickName='" + nickName + '\'' +", age=" + age +", address='" + address + '\'' +'}';}}
新增一个测试类
public class AnnotationConfigClassPath {AnnotationConfigApplicationContext context;@Beforepublic void init() {// 指定配置类context = new AnnotationConfigApplicationContext(MainConfig.class);}@Testpublic void initComplete() {// 输出注入的值Person bean = context.getBean(Person.class);System.out.println(bean);// 从上下文环境中获取配置String property = context.getEnvironment().getProperty("person.nickName");System.out.println("Value = " + property);}}
输出结果:
Person{name='123', nickName='燕归来兮', age=25, address='安徽省芜湖市'}Value = 燕归来兮
