首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么 spring 中,不支持 autowired 静态变量?

为什么 spring 中,不支持 autowired 静态变量?

作者头像
水货程序员
修改2018-12-03 15:10:19
1.5K0
修改2018-12-03 15:10:19
举报
文章被收录于专栏:javathingsjavathings

为什么 spring 中,不支持 autowired 静态变量?

因为静态变量是属于本身类的信息,当类加载器加载静态变量时,Spring 的上下文环境还没有被加载,所以不可能为静态变量绑定值。

同时,Spring 也不鼓励为静态变量注入值,因为这会增加了耦合度,对测试不友好。但还是有很多方法来绕过这些限制,实现对静态变量注入值。

比如用 set 方法作为跳板,在里面实现赋值。

静态变量的注入

@Component
@PropertySource(value = { "classpath:/mine.properties" })
public class User {
	public static LogHelper loghelper;
	@Autowired
	public void setLoghelper(LogHelper loghelper) {
		System.out.println("autowired loghelper....");
		User.loghelper = loghelper;
	}
 
}

或者使用 PostConstruct 当跳板。

@Component
@PropertySource(value = { "classpath:/mine.properties" })
public class User {
	public static LogHelper loghelper;
	@Autowired
	private LogHelper loghelper1;
	@PostConstruct
	public void init() {
		System.out.println("autowired loghelper....");
		User.loghelper = loghelper1;
	}
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么 spring 中,不支持 autowired 静态变量?
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档