springboot 注解动态赋值_Springboot学习之 使用@Value()注解给类静态属性赋值

最近在做项目时,需要要工具类中对属性进行赋值,里面有过期时间和秘钥,因为这两个都是相对固定不会变动的东西,所以配在配置文件 或者数据库配置表最好,这边使用的是配置文件(application.yml),然后通过@Value()属性注入到对应的属性中。

刚开始在做的时候,启动项目后发现通过使用@Value注解对这两个属性进行赋值,结果两个都注不进去。

这个让我很苦恼,通过查找资料。找到了通过set的办法进行注入,并成功。

解决办法:

1.将这两个私有属性的set方法从私有变成公开(private -->>> public);

2.生成这两个静态属性的set方法;

3.将原来在静态属性上的@Value() 注解改到设在 set方法上;

4.去除这两个静态属性set方法的static关键字

类上面的@Compoent 注解一定要有。

最终结果如下:

@Component

public class JwtUtil {

/**

* 过期时间,单位毫秒

*/

private static long EXPIRE_TIME ;

/**

* token秘钥

*/

private static String TOKEN_SECRET ;

@Value("${jwt.expire-time}")

public void setExpireTime(long expireTime) {

EXPIRE_TIME = expireTime;

}

@Value("${jwt.secret}")

public void setTokenSecret(String tokenSecret) {

TOKEN_SECRET = tokenSecret;

}

/***省去其他无关代码***/

}

改完后,重新启动项目,调用该工具类,可以得到对应的配置值。

在Spring Boot中,我们经常使用注解来配置应用程序的各种属性。如果一个注解有一个boolean型的属性,我们可以使用以下两种方法动态地指定该属性的值: 1. 使用SpEL表达式:在注解使用SpEL表达式,这样属性的值将在应用程序启动时动态计算。例如: ```java @Autowired @Value("#{systemProperties['myBooleanProperty'] ?: true}") private boolean myBooleanProperty; ``` 上述代码中,@Value注解使用了SpEL表达式来设置myBooleanProperty属性的值。表达式中使用了systemProperties对象,该对象代表了系统属性。如果系统属性myBooleanProperty存在,则使用属性值。否则,使用默认值true。 2. 使用@ConfigurationProperties注解:如果一个注解有多个boolean型的属性,或者我们想将多个属性组合在一起,可以使用@ConfigurationProperties注解。该注解注解中的所有属性映射到一个JavaBean中。然后,我们可以在应用程序启动时从属性文件或环境变量中加载该JavaBean,并使用其中的属性。例如: ```java @Component @ConfigurationProperties(prefix = "myProperties") public class MyProperties { private boolean myBooleanProperty; public boolean isMyBooleanProperty() { return myBooleanProperty; } public void setMyBooleanProperty(boolean myBooleanProperty) { this.myBooleanProperty = myBooleanProperty; } } ``` 上述代码中,@ConfigurationProperties注解将myProperties前缀的属性映射到MyProperties中。我们可以将该注入到其他中,并使用其中的属性。例如: ```java @Autowired private MyProperties myProperties; public void doSomething() { boolean myBooleanProperty = myProperties.isMyBooleanProperty(); // ... } ``` 在上述代码中,我们使用@Autowired注解将MyProperties注入到当前中,并使用其中的属性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值