您好,登錄后才能下訂單哦!
本篇文章為大家展示了spring中怎么實現靜態注入,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
場景是:工具類一般都是靜態方法,靜態方法只能訪問靜態屬性。所以,我們需要靜態注入類或者屬性。
注入類或者方法:
@Autowired private TestService testService; [@Resource](https://my.oschina.net/u/929718) private TestService testService; @Value("${key}") private String key;
這樣,我們就把容器里的類和Enviroment里的值注進去了。
我們使用相同的方式進行注入
@Autowired private static TestService testService; [@Resource](https://my.oschina.net/u/929718) private static TestService testService; @Value("${key}") private static String key;
我們在靜態方法使用的時候,會出現null; 發現注入不進去。
解決辦法有兩種方式: (1)@PostConstruct方式實現
@Component public class TestUtil { @Autowired private static TestService testService; private static TestUtil testUtils; @PostConstruct public void init() { testUtils =this; testUtils.testService =this.testService; } }
@PostConstruct 注解的方法在加載類的構造函數之后執行,也就是在加載了構造函數之后,執行init方法;(@PreDestroy 注解定義容器銷毀之前的所做的操作)這種方式和在xml中配置 init-method和 destory-method方法差不多,定義spring 容器在初始化bean 和容器銷毀之前的所做的操作;
(2)set方法注入實現
@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; } }
上述內容就是spring中怎么實現靜態注入,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。