首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot对静态变量@Value注入默认值

Spring Boot对静态变量@Value注入默认值

作者头像
程序新视界
发布2020-06-02 15:11:42
2.8K0
发布2020-06-02 15:11:42
举报
文章被收录于专栏:丑胖侠丑胖侠

通常我们在application.properties中配置属性值,然后通过@Value在实例化的类中进行注入。比如application.properties中配置为:

server.url=127.0.0.1

那么在代码中使用如下方式便进行注入:

@Value("${server.url}")
private String serverUrl;

但如果某些属性我们想注入到静态变量上,比如定义了一个Constants的类,里面存储的都是static的变量,比如:

@Component
public class RongContants {

	/**
	 * 应用AppKey
	 */
	public static String appKey;

	public static String appSecret;
    
}

此时该如何处理呢?如果依旧使用@Value会发现无法正常注入,属性的值依旧是null。

此时我们需要对静态属性提供一个set方法,在set方法进行注入,就可解决该问题。

@Component
public class RongContants {

	/**
	 * 应用AppKey
	 */
	public static String appKey;

	public static String appSecret;
	
	@Value("${appKey}")
	public void setAppKey(String APP_KEY) {
		appKey = APP_KEY;
	}

	@Value("${appSecret}")
	public void setAppSecret(String APP_SECRET) {
		appSecret = APP_SECRET;
	}
	
}

由于属性是静态的,appKey和appSecret无法使用this进行区分,此时set方法中参数的变量最好与属性值进行区分。

其实,正常来说并不建议使用这种形式进行注入,因为提供了set方法之后,原本的静态变量有可能被改变了。而正常情况下我们的静态变量一般都是final形式的。

但如果你希望通过@Value形式进行注解,这是一种思路和方法。

原文链接:《Spring Boot对静态变量@Value注入默认值

精品SpringBoot 2.x视频教程

《Spring Boot 2.x 视频教程全家桶》,精品Spring Boot 2.x视频教程,打造一套最全的Spring Boot 2.x视频教程。


本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-05-30 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 精品SpringBoot 2.x视频教程
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档