SpringBoot通过@Value实现给静态变量注入值详解
作者:蹲街式等待 时间:2022-04-30 14:30:37
一、简介
SpringBoot
中给普通变量注入值只需在变量上添加 @Value
注解即可。
application.properties
配置文件有如下配置:
mail.name=admin@163.com
main.pwd=admin123
给普通变量赋值时,直接在变量声明之上添加 @Value()
注解即可。
@Value("${mail.name:admin@163.com}")
private String mailName;
@Value("${mail.pwd:admin123}")
private String mailPwd;
注:需要在类上添加 @Component
注解。
当要给 静态变量
注入值的时候,若是在静态变量声明之上直接添加@Value()
注解是无效的。
@Value("${mail.name:admin@163.com}")
private static String mailName;
@Value("${mail.pwd:admin123}")
private static String mailPwd;
虽然在编译和运行上没有报错,但是mailName、mailPwd的值都是NULL。
那么如何给静态变量注入值呢?
二、@Value给静态变量注入值
方案一
set()方法设置
@Component
public class MailInfo{
public static String mailName;
public static String mailPwd;
@Value("${mail.name:admin@163.com}")
public void setMailName(String name){
mailName = name;
}
@Value("${mail.pwd:admin123}")
public void setMailPwd(String pwd){
mailPwd = pwd;
}
}
注:需要在类上加入 @Component
注解,方法名 setMailName
和参数名 name
可以任意命名。
方案二
@PostConstruct注解修饰的方法中进行赋值
@Component
public class MailInfo{
@Value("${mail.name:admin@163.com}")
public String preMailName;
@Value("${mail.pwd:admin123}")
public String preMailPwd;
public static String mailName;
public static String mailPwd;
@PostConstruct
public void init(){
mailName = preMailName;
mailPwd = preMailPwd;
}
}
三、总结
Spring不允许/不支持把值注入到
静态变量
中;Spring的
@Value
依赖注入是依赖set()
方法;set()
方法是普通的对象方法;static
变量是类的属性,static没有 set() 方法;
来源:https://davis.blog.csdn.net/article/details/125814947
标签:SpringBoot,@Value,注入值
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
深入理解Spring事务原理
2022-01-18 04:16:39
![](https://img.aspxhome.com/file/2023/7/61777_0s.jpg)
Spark网站日志过滤分析实例讲解
2021-06-08 12:59:24
![](https://img.aspxhome.com/file/2023/7/60927_0s.png)
java @Value(
2023-10-05 02:54:47
![](https://img.aspxhome.com/file/2023/7/63017_0s.png)
Java logback日志的简单使用
2023-07-15 01:32:33
spring mvc 组合mybatis框架实例详解
2023-11-28 04:56:04
![](https://img.aspxhome.com/file/2023/2/59752_0s.png)
Java @Deprecated注解的作用及传递性
2023-08-11 12:55:05
![](https://img.aspxhome.com/file/2023/7/58097_0s.png)
基于Mock测试Spring MVC接口过程解析
2023-11-27 12:04:30
SpringBoot整合TomCat实现本地图片服务器代码解析
2021-07-30 16:34:19
springboot配置mysql数据库spring.datasource.url报错的解决
2023-10-04 12:49:26
浅谈Java中向上造型向下造型和接口回调中的问题
2023-11-09 13:51:46
![](https://img.aspxhome.com/file/2023/1/59151_0s.jpg)
44条Java代码优化建议
2023-12-22 06:03:49
![](https://img.aspxhome.com/file/2023/6/62776_0s.png)
java 键盘输入一个数,输出数组中指定元素的示例
2023-11-24 20:31:14
关于idea中SpringBoot启动失败的坑
2022-07-18 13:02:24
![](https://img.aspxhome.com/file/2023/4/62234_0s.png)
java实现zip,gzip,7z,zlib格式的压缩打包
2023-08-13 08:56:59
Java读取txt文件中的数据赋给String变量方法
2022-08-04 22:32:19
Windows+Apache+resin配置
2023-10-16 08:53:07
Java回调函数实例代码详解
2023-11-23 18:22:26
详解Mybatis是如何解析配置文件的
2023-10-15 23:23:40
![](https://img.aspxhome.com/file/2023/0/61930_0s.png)
java 汉诺塔Hanoi递归、非递归(仿系统递归)和非递归规律 实现代码
2023-09-13 11:29:31
IDEA集成MyBatis Generator插件的使用
2023-08-12 00:28:47
![](https://img.aspxhome.com/file/2023/6/57896_0s.png)