普通静态类方法获取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讲解及实例

时间: 2024-11-09 00:41:28

普通静态类方法获取Spring注入的Been实体的相关文章

JSP 获取Spring 注入对象

<%@ page import="org.springframework.web.context.support.WebApplicationContextUtils"%> <%@ page import="org.springframework.context.ApplicationContext"%> ServletContext sc = this.getServletConfig().getServletContext(); Appl

SSH框架系列:Spring读取配置文件以及获取Spring注入的Bean

分类: [java]2013-12-09 16:29 1020人阅读 评论(0) 收藏 举报 1.简介 在SSH框架下,假设我们将配置文件放在项目的src/datasource.properties路径下,Spring的配置文件也是src/applicationContext.xml路径下,那么我们可以借助Spring的property-placeholder读取配置文件,然后注入Bean中.我们在程序中,可以根据Bean的Id,获取注入的值.这样我们就可以借助Spring来读取配置文件. 2.

JSP 获取Spring注入的对象

ServletContext sc = this.getServletConfig().getServletContext(); ApplicationContext ac2 = WebApplicationContextUtils.getWebApplicationContext(sc); ImpDiscountInfoServ serv = (ImpDiscountInfoServ) ac2.getBean("appDiscountInfoServ");

JAVA获取Spring上下文

1. 添加监听 public class SpringContextListener implements ServletContextListener { //获取spring注入的bean对象 public static WebApplicationContext springContext; public void contextDestroyed(ServletContextEvent event) { //springContext = null; } /** * 获取spring上下

【Spring开发】—— Spring注入静态变量

今天碰到一个问题,我的一个工具类提供了几种静态方法,静态方法需要另外一个类的实例提供处理,因此就写出了这样的代码: 1 Class Util{ 2 private static XXX xxx; 3 xxx = BeanUtil.getBean("xxx"); 4 public static void method1(){ 5 xxx.func1(); 6 } 7 public static void method2(){ 8 xxx.func2(); 9 } 10 } 这里是使用的g

Spring注入静态变量(转)

今天碰到一个问题,我的一个工具类提供了几种静态方法,静态方法需要另外一个类的实例提供处理,因此就写出了这样的代码: Class Util{ private static XXX xxx; xxx = BeanUtil.getBean("xxx"); public static void method1(){ xxx.func1(); } public static void method2(){ xxx.func2(); } } 这里是使用的getBean的方式,获得XXX的实例,但是

[转]spring 注入静态变量

原文: http://www.cnblogs.com/xing901022/p/4168124.html 今天碰到一个问题,我的一个工具类提供了几种静态方法,静态方法需要另外一个类的实例提供处理,因此就写出了这样的代码: 1 Class Util{ 2 private static XXX xxx; 3 xxx = BeanUtil.getBean("xxx"); 4 public static void method1(){ 5 xxx.func1(); 6 } 7 public s

ssh下:系统初始化实现ServletContextListener接口时,获取spring中数据层对象无效的问题

想要实现的功能:SSH环境下,数据层都交由Spring管理:在服务启动时,将数据库中的一些数据加载到ServletContext中缓存起来. 系统初始化类需要实现两个接口: ServletContextListener,系统初始化时调用contextInitialized方法缓存数据: ApplicationContextAware,获取Spring的ApplicationContext对象,以获取spring容器管理的service对象. 系统初始化类如下: 1 package com.liz

普通java类获取spring容器bean的方法

很多时候,我们在普通的java类中需要获取spring的bean来做操作,比如,在线程中,我们需要操作数据库,直接通过spring的bean中构建的service就可以完成.无需自己写链接..有时候有些好的东西,拿到用就好了. 这里是多种方式中的一种. 通过实现ApplicationContextAware获取bean.这里有个问题,就是,如果spring容器没有启动完成的时候,不能通过这个方法获取,因为这样,会报空指针,因为 private static ApplicationContext