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

本文详细介绍了Spring框架中@Value注解的多种用法,包括为普通属性和静态属性赋值的方法,并探讨了如何解决IDE自动生成的静态属性set方法导致的问题。此外,还提供了使用@PostConstruct注解和InitializingBean接口来实现静态属性赋值的具体实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

一、@Value 用法

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

@Value("${user.val.name}")

private String name ;

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

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

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

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

        

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

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

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

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

二、Spring 静态属性赋值

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

private static Integer age ;

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

@Value("${user.val.age}")
private Integer age2;

/**
 * 使用 @PostConstruct 注解,实现静态属性赋值
 */
@PostConstruct
public  void setAge3(){
    UserVal.age = age2;
}

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

@Value("${user.val.age}")
private Integer age3;

/**
 * 实现 InitializingBean 接口,实现静态属性赋值
 */
@Override
public void afterPropertiesSet() throws Exception {
    UserVal.age = age3;
}

三、总结

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

/**
 * static 静态属性
 */
private static String addr;

/**
 *  idea /eclipse 自动生成的 set 方法 ,
 *  包含 static 修饰,导致 @Value 属性注入无效 (实际未执行!)
 */
@Value("${user.val.addr}")
public static void setAddr(String addr) {
    UserVal.addr = addr;
}

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值