spring實現(xiàn)靜態(tài)注入(類或者屬性)操作示例
spring實現(xiàn)靜態(tài)注入類或者屬性
場景是:工具類一般都是靜態(tài)方法,靜態(tài)方法只能訪問靜態(tài)屬性。所以,我們需要靜態(tài)注入類或者屬性。
常規(guī)操作:
注入類或者方法:
@Autowired
private TestService testService;
@Resource
private TestService testService;
@Value("${key}")
private String key;這樣,我們就把容器里的類和Enviroment里的值注進去了。
靜態(tài)注入操作:
我們使用相同的方式進行注入
@Autowired
private static TestService testService;
@Resource
private static TestService testService;
@Value("${key}")
private static String key;我們在靜態(tài)方法使用的時候,會出現(xiàn)null;
發(fā)現(xiàn)注入不進去。
靜態(tài)注入失敗解決兩種方式
- (1)@PostConstruct方式實現(xiàn)
@Component??
public?class?TestUtil?{
@Autowired
private?static?TestService?testService;
private?static?TestUtil?testUtils;
@PostConstruct??????
public?void?init()?{??????????
testUtils?=this;??????????
testUtils.testService?=this.testService;??????
}??
}@PostConstruct 注解的方法在加載類的構造函數之后執(zhí)行,也就是在加載了構造函數之后,執(zhí)行init方法;
(@PreDestroy 注解定義容器銷毀之前的所做的操作)這種方式和在xml中配置 init-method和 destory-method方法差不多,定義spring 容器在初始化bean 和容器銷毀之前的所做的操作;
- (2)set方法注入實現(xiàn)
@Component??
public?class?TestUtil?{
private?static?TestService?testService;
private?static?String?key;
@Value("{key}")
public?void?setTestService(String?key)?{??????????
TestUtil.key?= key;??????
}??
@Autowired
public?void?setTestService(TestService?testService)?{??????????
TestUtil.testService?=this.testService;??????
}??
}ok,完事,使用set方法注入,這種使用比較多
以上就是spring實現(xiàn)靜態(tài)注入(類或者屬性)操作示例的詳細內容,更多關于spring靜態(tài)注入類屬性的資料請關注腳本之家其它相關文章!
相關文章
dom4j創(chuàng)建和解析xml文檔的實現(xiàn)方法
下面小編就為大家?guī)硪黄猟om4j創(chuàng)建和解析xml文檔的實現(xiàn)方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-06-06
MyBatis綁定錯誤提示BindingException:Invalid bound statement (not f
這篇文章主要介紹了MyBatis綁定錯誤提示BindingException:Invalid bound statement (not found)的解決辦法,非常不錯,具有參考借鑒價值,需要的的朋友參考下吧2017-01-01
springcloud干貨之服務注冊與發(fā)現(xiàn)(Eureka)
這篇文章主要介紹了springcloud干貨之服務注冊與發(fā)現(xiàn)(Eureka) ,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-01-01
Spring Cloud Feign內部實現(xiàn)代碼細節(jié)
Feign 的英文表意為“假裝,偽裝,變形”, 是一個http請求調用的輕量級框架,可以以Java接口注解的方式調用Http請求,而不用像Java中通過封裝HTTP請求報文的方式直接調用。接下來通過本文給大家分享Spring Cloud Feign內部實現(xiàn)代碼細節(jié),感興趣的朋友一起看看吧2021-05-05

