• 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. }

  • 相关阅读:
    华为推出HarmonyOS 3.0,更智能、更安全,首批更新你的机型吗?
    Python的一些小基础
    利用BCEL字节码构造内存马
    2022年11月26日-
    【Docker】Docker Network(网络)
    D Mocha and Railgun
    echarts案例之仪表盘如何单独设置指针颜色?
    Note——torch.size() & umr_maximum() array.max() & itertools.product()
    【PyTorch】深度学习实践之 逻辑斯蒂回归 Logistic Regression
    分布式锁全家桶
  • 原文地址:https://blog.csdn.net/HaHa_Sir/article/details/126924443