如何在Spring中实例化非Action类


开发过程中碰到一个问题,无论如何都不能在非Action中调用通过Spring实例化的类,在小强的帮助下解决了这个问题。:)




案例: 一个Tag需要调用一个鉴权Service,但是Tag不是Action,没有在Spring中注册,虽然service通过Application-Context.xml中初始化,但是Tag是不能通过Class.forname("Service")来初始化Service。



 


解决方法:通过增加一个辅助类(appContextUtil)来实例化spring中的对象.



1。增加类



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

    public class AppContextUtil implements ApplicationContextAware 
   
{ 
   
    static ApplicationContext applicationContext; 
   
    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException 
   
    { 
   
        this.applicationContext= applicationContext; 
   
    } 
   
    public static ApplicationContext getApplicationContext() 
   
    { 
   
        return applicationContext; 
   
    } 
   
}




2。调用方法

在Tag的获取Service的方法如下: 

return (Service)(AppContextUtil.getApplicationContext().getBean("Service"));