servert 中如何调用spring管理的bean方法

来源:互联网 发布:高新区行知小学 重点 编辑:程序博客网 时间:2024/05/18 11:21


在应用中一般普通的JavaPojo都是由spring来管理的,所以使用autowire注解来进行注入不会产生问题,但是有两个东西是例外的,一个是 Filter,一个是Servlet,这两样东西都是由Servlet容器来维护管理的,所以如果想和其他的Bean一样使用Autowire来注入的 话,是需要做一些额外的功夫的。
对于Filter,Spring提供了DelegatingFilterProxy,所以本文主要讲述Servlet的解决。
1、比较直观但是不大优雅的做法是重写init()方法,在里面使用AutowireCapableBeanFactory来手工告诉Spring:我这个Servlet是需要这样的一个Bean的。具体写法:

init 中:

  1. public void init(ServletConfig servletConfig) throws ServletException {  
  2. ServletContext servletContext = servletConfig.getServletContext();  
  3. WebApplicationContext webApplicationContext = WebApplicationContextUtils.getWebApplicationContext(servletContext);  
  4. AutowireCapableBeanFactory autowireCapableBeanFactory = webApplicationContext.getAutowireCapableBeanFactory();  
  5. autowireCapableBeanFactory.configureBean(this, BEAN_NAME);  
  6. }  

2.在doget或者doPust中加入以下代码:

  1. // servlet中调用spring中的Bean  
  2. application = getServletContext();  
  3. wac = WebApplicationContextUtils.getWebApplicationContext(application);// 获取spring的context  
  4. IClientDao clientDao = (IClientDao) wac.getBean("clientDaoBean");  



原创粉丝点击