java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot @Value

SpringBoot通过@Value实现给静态变量注入值详解

作者:蹲街式等待

这篇文章主要介绍了springboot如何通过@Value给静态变量注入值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

一、简介

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给静态变量注入值

方案一

@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 可以任意命名。

方案二

@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;
	}
}

三、总结

到此这篇关于SpringBoot通过@Value实现给静态变量注入值详解的文章就介绍到这了,更多相关SpringBoot @Value内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文