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


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

    一、@Value 用法

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

    1. @Value("${user.val.name}")
    2. 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. * 使用 @PostConstruct 注解,实现静态属性赋值
    5. */
    6. @PostConstruct
    7. public void setAge3(){
    8. UserVal.age = age2;
    9. }

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

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

    三、总结

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

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

  • 相关阅读:
    广州蓝景—11个ES2022(ES13)中惊人的JavaScript新特性
    企业申请车辆前雾灯E-mark认证的前提条件
    使用Keepalived实现双机热备(虚拟漂移IP地址)详细介绍
    今天谈谈小众化游戏代理能不能做?
    【C++】拷贝构造函数调用时机 ① ( 使用一个对象初始化另外一个对象 | 将一个对象赋值给另外一个对象 )
    springboot原理初探
    芯片设计_IC行业到底还值不值得入?
    3、Linux-命令提示符与常用命令(一)
    uniapp微信小程序长按识别微信二维码
    flutter库
  • 原文地址:https://blog.csdn.net/HaHa_Sir/article/details/126924443