• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Spring 静态属性赋值 @value 注入静态属性 @Value注解用法

武飞扬头像
HaHa_Sir
帮助1

Spring 静态属性赋值 @value 注入静态属性 @Value注解用法

一、@Value 用法

        1、普通属性赋值 --- 配置文件中若无 user.val.name  属性,则会报错,服务启动失败!

  1.  
    @Value("${user.val.name}")
  2.  
     
  3.  
    private String name ;

        2、普通属性赋值 --- 默认值,配置文件中若无 user.val.name 属性, 不会报错。

  1.  
    @Value("${user.val.name:小明}")
  2.  
    private String name ;

        3、静态属性赋值 --- 错误的

  1.  
    @Value("${user.val.age}")
  2.  
    private static Integer age ;

        

        3.2、静态属性赋值 --- 错误的 ,注意:方法被 static 关键词修饰。

  1.  
    @Value("${user.val.age}")
  2.  
    public static void setAge(Integer age) {
  3.  
    UserVal.age = age;
  4.  
    }

        3.3、静态属性赋值 --- 正确的 , 没有 static 修饰

  1.  
    @Value("${user.val.age}")
  2.  
    public void setAge2(Integer age) {
  3.  
    UserVal.age = age;
  4.  
    }

二、Spring 静态属性赋值

        1、假设在Spring中有一个静态属性,还可以通过其他的那些方法赋值呢?

private static Integer age ;

        2、使用 @PostConstruct 注解,实现静态属性赋值

  1.  
    @Value("${user.val.age}")
  2.  
    private Integer age2;
  3.  
     
  4.  
    /**
  5.  
    * 使用 @PostConstruct 注解,实现静态属性赋值
  6.  
    */
  7.  
    @PostConstruct
  8.  
    public void setAge3(){
  9.  
    UserVal.age = age2;
  10.  
    }

        3、实现 InitializingBean 接口,实现静态属性赋值

  1.  
    @Value("${user.val.age}")
  2.  
    private Integer age3;
  3.  
     
  4.  
    /**
  5.  
    * 实现 InitializingBean 接口,实现静态属性赋值
  6.  
    */
  7.  
    @Override
  8.  
    public void afterPropertiesSet() throws Exception {
  9.  
    UserVal.age = age3;
  10.  
    }

三、总结

        1、注意点: idea / eclipse ,自动生成 静态属性的 set/get方法时,会自动加上 static 静态修饰,在使用 @Value注解注入值的时候,会导致注入不进去

  1.  
    /**
  2.  
    * static 静态属性
  3.  
    */
  4.  
    private static String addr;
  5.  
     
  6.  
    /**
  7.  
    * idea /eclipse 自动生成的 set 方法 ,
  8.  
    * 包含 static 修饰,导致 @Value 属性注入无效 (实际未执行!)
  9.  
    */
  10.  
    @Value("${user.val.addr}")
  11.  
    public static void setAddr(String addr) {
  12.  
    UserVal.addr = addr;
  13.  
    }

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfkjkfh
系列文章
更多 icon
同类精品
更多 icon
继续加载