在Filter和Listener中使用Spring获得bean
编程技术  /  houtizong 发布于 3年前   71
在Filter的init方法中获得WebApplicationContext并调用getBean(String)方法.
这里的知识点就是如何在ServletContext中获得Spring的ApplicationContext:
public void init(FilterConfig filterConfig) throws ServletException {ServletContext sc = filterConfig.getServletContext();WebApplicationContext wac = (WebApplicationContext) sc.getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);//获得WebApplicationContext还可以调用//WebApplicationContextUtils.getWebApplicationContext(sc);//当然最后Spring都是调用getAttribute方法.this.myManager = (MyManager) wac.getBean("myManager");}
使用Spring的Filter代理类org.springframework.web.filter.DelegatingFilterProxy来实现.
然后在Spring的xml配置文件里将属性注入.
首先在web.xml里面配置Filter
<filter><filter-name>MySpringFilter</filter-name><filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class><init-param><param-name>targetBeanName</param-name><param-value>myFilter</param-value></init-param></filter><filter-mapping><filter-name>MySpringFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>
userFilter则是我们自己的Filter在Spring中bean的name.
然后在Spring的xml配置文件中配置:
<bean id="myFilter" class="filter.MyFilter"><property name="myManager" ref="myManagerInSpring"></property></bean>
原本想实现ApplicationContextAware接口,但是现在有些东西还需要测试.目前的方案是想办法获得ServletContext.如果谁知道如何用Spring自动管理Listener请吼我.
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!
技术博客集 - 网站简介:
前后端技术:
后端基于Hyperf2.1框架开发,前端使用Bootstrap可视化布局系统生成
网站主要作用:
1.编程技术分享及讨论交流,内置聊天系统;
2.测试交流框架问题,比如:Hyperf、Laravel、TP、beego;
3.本站数据是基于大数据采集等爬虫技术为基础助力分享知识,如有侵权请发邮件到站长邮箱,站长会尽快处理;
4.站长邮箱:[email protected];
文章归档
文章标签
友情链接