码迷,mamicode.com
首页 > 编程语言 > 详细

因为权限原因要在filter里使用spring- service所产生的问题

时间:2015-08-02 18:31:31      阅读:298      评论:0      收藏:0      [点我收藏+]

标签:

参考:

加载顺序 http://blog.csdn.net/wayfoon322/article/details/2418011   

filter 使用注入bean  http://zy116494718.iteye.com/blog/1918131


1. 项目spring使用的是注解方式:在filter里debug看源码,类型里

allBeanNamesByType ConcurrentHashMap<K,V>  (id=169) ,是有想要的roleService的,但是在如下代码里就是取不到。总报异常:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No bean named ‘roleManageService‘ is defined


WebApplicationContext ac = WebApplicationContextUtils.getWebApplicationContext(request.getServletContext());

RoleManageService roleManageService = (RoleManageService) ac.getBean("roleManageService"); 


2. 试了使用网上的各种接口:

实现ApplicationContextAware接口

extends ContextLoaderListener implements  ServletContextListener

等等,还是获取不到bean实例


3. 最后试着将这个RoleManageService改成了xml配置方式, 终于在filter里获取到了,还是用1。的方法获取,观察下面这两张debug的截图

<bean id="roleManageService" class="com.ljq.service.RoleManageService" >
    <property name="roleManageDao">
        <ref bean="roleManageDao"/>
    </property>
</bean>

图1 技术分享        


图2技术分享


图1是使用注解的方式,allBeanNamesByType里有role的实例,构造器没有role实例,getBean的时候获取异常。

图2是使用XML配置的方式,allBeanNamesByType里有role的实例,构造器有role实例,getBean的时候正常。


4.基于上述原因,我想应该是在web加载顺序的时候,

spring容器的注解方式在filter之后,导致获取不到报异常。

spring容器的xml配置方式在filter之前,所以能获取到。

so.将这些要使用在filter的实例改成了xml配置方式,其它的还是用注解

但我参考别人的文章,人家为什么能在filter里获取到注解的实例呢?哎,才蔬学浅好郁闷。。


























因为权限原因要在filter里使用spring- service所产生的问题

标签:

原文地址:http://my.oschina.net/kelvinline/blog/486685

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!