在应用中获取Spring的应用上下文

本文介绍了如何在Servlet中使用Spring框架的ApplicationContext来获取管理的对象,包括两种方法:直接在Servlet中获取和实现ApplicationContextAware接口。同时,讨论了在工厂模式+策略模式下,如何通过工具类动态获取Spring管理的对象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一种方法,在servlet中

ServletContext servletContext =this.getServletContext();

WebApplicationContext wac = WebApplicationContextUtils.
                                    getRequiredWebApplicationContext(servletContext);

User user = (User)wac.getBean("user");
 

第二种方法,做一个ApplicationContextAware的Bean,并实现setApplicationContext方法

public class ApplicationContextUtil implements ApplicationContextAware
{
    private static ApplicationContext applicationContext = null;
    /** Creates a new instance of ApplicationContextUtil */
    public ApplicationContextUtil()
    {
    }
    public void setApplicationContext(ApplicationContext applicationContext)
                           throws BeansException
    {
        this.applicationContext = applicationContext;
    }
    public static ApplicationContext getApplicationContext()
    {
        return applicationContext;
    }
}
 


并做配置

<bean id="applicationContextUtil"
        class="ApplicationContextUtil"/>
 

我的项目中有些地方用到了工厂模式+策略模式,所以部分策略对象是由工厂动态提供,这种对象中如果要获得由spring管理的对象,就需要一个工具类,这个类通过上面第二种方式获得Spring应用上下文,然后拿到指定对象,代码如下:

public class SpringUtil implements ApplicationContextAware{
	private static ApplicationContext context;
	
	public SpringUtil(){
		
	}

	public static <T> T getObject(String id,Class<T> clazz) throws BeanNotOfRequiredTypeException,NoSuchBeanDefinitionException,BeansException{
		return context.getBean(id,clazz);
	}

	public void setApplicationContext(ApplicationContext applicationContext)
			throws BeansException {
		SpringUtil.context = applicationContext;
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值