日期:2014-05-18  浏览次数:20780 次

如何在Listener或servlet中,使用 spring 使用注解定义的bean?
请问如何在Listener或servlet中,使用 spring 使用注解定义的bean?
我是用网上找的方法,通过WebApplicationContext取bean,但是,跟踪发现,WebApplicationContext中只有xml中定义的bean,我的bean都是用注解方式@Component定义的,请问如何在Listener或servlet中,使用 spring 使用注解定义的bean?

谢谢啊

这是定义的listener,用于替代spring的contextloaderListener

public class SpringLoaderListener extends ContextLoaderListener implements ServletContextListener { 
@Override
public void contextInitialized(ServletContextEvent event) { 
        super.contextInitialized(event); 
        ServletContext t1 = event.getServletContext();
        WebApplicationContext t2 = WebApplicationContextUtils.getWebApplicationContext(t1);
        SpringContextUtil.setApplicationContextStaticlly(t2); 
    }

@Override
public void contextDestroyed(ServletContextEvent arg0) {
// TODO Auto-generated method stub






package com.woods.common.util;


import org.springframework.beans.BeansException;   
import org.springframework.context.ApplicationContext;   
import org.springframework.context.ApplicationContextAware;   
import org.springframework.web.context.WebApplicationContext;

public class SpringContextUtil implements ApplicationContextAware {  
  
    // Spring应用上下文环境  
    private static WebApplicationContext applicationContext;  
  
    public static void setApplicationContextStaticlly(WebApplicationContext vApplicationContext)    
    {  
        SpringContextUtil.applicationContext = vApplicationContext;  
    }  
  
    

    @Override
    public void setApplicationContext(ApplicationContext applicationContext) {  
        SpringContextUtil.applicationContext = (WebApplicationContext) applicationContext;  
    }  
  

    public static ApplicationContext getApplicationContext() {  
        return applicationContext;  
    }  
  
    /** 
     * 获取对象 
     */  
    public static Object getBean(String name) throws BeansException {  
        return applicationContext.getBean(name);  
    }  
  



web.xml

<context-param>
<param-name>contextConfigLocati