在Spring的工作开发中,我们经常使用的是 @Value 注解,来实现bean的属性注入,使用@Value注解总计有三种方式来注入值:

    1. 直接赋值
    2. EL表达式
    3. Properties配置

    下面的代码展示了,这三种方式的使用示例

    1. 为了延时Properties的使用,这里需要创建一个简单的 .properties 配置文件,放置于resources目录下

      1. person.nickName=燕归来兮
    2. 在配置类上注入对象,添加Properties源类,注意,如果出现中文 乱码,可以使用 encoding = "UTF-8" 的形式指定编码

      1. @PropertySource(value = "classpath:/person.properties",encoding = "UTF-8")
    3. 创建一个Bean对象,下面以Person为演示对象,展示三种方式的使用

      Person对象暂时未实现setter/getter 方法,请手动添加这些属性的的setter/getter方法

    1. public class Person {
    2. // 注入方式: Properties 注入
    3. @Value("${person.name}")
    4. private String name;
    5. // 注入方式: Properties 注入
    6. @Value("${person.nickName}")
    7. private String nickName;
    8. // 注入方式: EL 表达式注入
    9. @Value("#{18 + 8 * 2 -9}")
    10. private Integer age;
    11. // 注入方式: 直接注入
    12. @Value("安徽省芜湖市")
    13. private String address;
    14. @Override
    15. public String toString() {
    16. return "Person{" +
    17. "name='" + name + '\'' +
    18. ", nickName='" + nickName + '\'' +
    19. ", age=" + age +
    20. ", address='" + address + '\'' +
    21. '}';
    22. }
    23. }
    1. 新增一个测试类

      1. public class AnnotationConfigClassPath {
      2. AnnotationConfigApplicationContext context;
      3. @Before
      4. public void init() {
      5. // 指定配置类
      6. context = new AnnotationConfigApplicationContext(MainConfig.class);
      7. }
      8. @Test
      9. public void initComplete() {
      10. // 输出注入的值
      11. Person bean = context.getBean(Person.class);
      12. System.out.println(bean);
      13. // 从上下文环境中获取配置
      14. String property = context.getEnvironment().getProperty("person.nickName");
      15. System.out.println("Value = " + property);
      16. }
      17. }

    输出结果:

    1. Person{name='123', nickName='燕归来兮', age=25, address='安徽省芜湖市'}
    2. Value = 燕归来兮