普通靜態類方法獲取Spring注入的Been實體
阿新 • • 發佈:2019-01-05
原本想要在靜態方法中獲取Spring註解後的Been,發現給Been欄位新增static關鍵字後,啟動tomcat報錯-------錯誤大意是說靜態欄位不能註解。
然後google下,解決方法如下:
package com.sondon.dev_info.controller; import javax.annotation.PostConstruct; import javax.annotation.PreDestroy; import javax.annotation.Resource; import org.springframework.stereotype.Controller; import com.sondon.dev_info.entity.DevInfo; import com.sondon.dev_info.service.TemplateManager; /** * @Project : Dev_Info_Web * @Package : com.sondon.dev_info.controller * @Class : Dev_Info.java * @Company 廣州訊動網路科技有限公司 * @Author : 蔡文鋒 * @DateTime:2015年4月24日 下午1:39:58 * @Blog:http://blog.csdn.net/caiwenfeng_for_23 * @Description : {} */ @Controller public class Dev_InfoController { @Resource public TemplateManager<DevInfo> templateManager; private static Dev_InfoController dev_infoController; /** * 構造方法執行後呼叫 init() */ @PostConstruct public void init() { System.out.println("I'm init method using @PostConstrut...."); dev_infoController = this; dev_infoController.templateManager = this.templateManager; } /** * servlet銷燬前呼叫dostory() */ @PreDestroy public void dostory(){ System.out.println("I'm destory method using @PreDestroy....."); } public static void Add_DevInfo(DevInfo devinfo) { // boolean result=false; dev_infoController.templateManager.add(devinfo); // return result; } /** * @param templateManager * the templateManager to set */ public void setTemplateManager(TemplateManager<DevInfo> templateManager) { this.templateManager = templateManager; } }
從上面可以看到使用了@PostConstruct , 然後在靜態方法 Add_DevInfo(DevInfo devinfo)呼叫了 templateManager
不瞭解@PostConstruct @PreDestroy的同學,可以看下面一篇文章: