1. 程式人生 > >普通靜態類方法獲取Spring注入的Been實體

普通靜態類方法獲取Spring注入的Been實體

原本想要在靜態方法中獲取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的同學,可以看下面一篇文章: