普通静态类方法获取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的同学,可以看下面一篇文章:

注解@PostConstruct与@PreDestroy讲解及实例

你可能感兴趣的:(spring,been,静态类方法)