亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Spring mvc 中有關 Shiro 1.2.3 配置問題

SPRing mvc 中有關 Shiro 1.2.3 配置問題

Spring 版本:3.2.x, 4.0.x

【問題說明】

首先介紹下配置出錯情況:

(1)項目中,Spring3 and Spring4 的 applicationContext.xml aop 配置如下:

... ...   <aop:aspectj-autoproxy expose-proxy="true"/>       <tx:annotation-driven transaction-manager="transactionManager"/>   <tx:advice id="txAdvice" transaction-manager="transactionManager">        <tx:attributes>            <tx:method name="save*" propagation="REQUIRED" />            <tx:method name="add*" propagation="REQUIRED" />            <tx:method name="create*" propagation="REQUIRED" />            <tx:method name="insert*" propagation="REQUIRED" />            <tx:method name="update*" propagation="REQUIRED" />            <tx:method name="del*" propagation="REQUIRED" />            <tx:method name="get*" propagation="REQUIRED" read-only="true" />            <tx:method name="find*" propagation="REQUIRED" read-only="true" />            <tx:method name="query*" propagation="REQUIRED" read-only="true" />            <tx:method name="*"  read-only="true"/>        </tx:attributes>    </tx:advice>       <aop:config expose-proxy="true">        <!-- 只對業務邏輯層實施事務 -->        <aop:pointcut id="txPointcut" expression="execution(* com.app..service..*.*(..))" />        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>    </aop:config>... ...

未加入 Shiro 之前,所有 applicationContext 的 getBean(...) 方法能正常獲取到相應對象實例。 調用getBeanDefinitionNames()輸出的 Beans 如下:

Bean NameBean Class
userDaoImplclass com.app.dao.impl.UserDaoImpl
resourceServiceImplclass com.app.service.impl.ResourceServiceImpl$$EnhancerBySpringCGLIB$$4ddf6901
roleServiceImplclass com.app.service.impl.RoleServiceImpl
userServiceImplclass com.app.service.impl.UserServiceImpl$$EnhancerBySpringCGLIB$$e7bcd944

以上 bean 都采用 @Repository 或@Service 的注解方式。

注意標紅Class名稱,這是因為被 CGLIB 動態代理。

(2)根據 Shiro 示例,新增配置文件 applicationContext-security.xml,然后配置Shiro 如下:

... ...    <bean id="securityManager" class="org.apache.shiro.web.mgt.DefaultWebSecurityManager">        <property name="realm" ref="myRealm"/>    </bean>    <bean id="lifecycleBeanPostProcessor" class="org.apache.shiro.spring.LifecycleBeanPostProcessor"/>    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">    </bean>    <bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">        <property name="securityManager" ref="securityManager"/>    </bean>         <bean id="formAuthenticationFilter"  class="org.apache.shiro.web.filter.authc.FormAuthenticationFilter"/>... ...

加入 Shiro 之后,發現有些地方 getBean(...) 出錯,調用getBeanDefinitionNames()輸出的 Beans 如下:

Bean NameBean Class
userDaoImplclass com.app.dao.impl.UserDaoImpl
resourceServiceImplclass $Proxy38
roleServiceImplclass com.app.service.impl.RoleServiceImpl
userServiceImplclass $Proxy32

可以注意到標紅Class名稱,這是由于配置 DefaultAdvisorAutoProxyCreator,又被 JDK 動態二次代理。

【解決辦法】

兩次都以 CGLIB 動態代理。在 AOP 配置加上proxy-target-class 屬性,值為 true。具體如下:

(1)在 applicationContext.xml 中配置

... ...    <aop:config expose-proxy="true" proxy-target-class="true">        <!-- 只對業務邏輯層實施事務 -->        <aop:pointcut id="txPointcut" expression="execution(* com.app..service..*.*(..))" />        <aop:advisor advice-ref="txAdvice" pointcut-ref="txPointcut"/>    </aop:config>... ...

(2)在 applicationContext-security.xml 配置 Shiro

... ...    <bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">        <property name="proxyTargetClass" value="true"/>      </bean>... ...

修改完成后,重新運行程序,getBean 恢復正常。

【參考資料】

spring的二次代理原因及如何排查 http://jinnianshilongnian.VEvb.com/blog/1894465


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久久影视精品| 欧美性猛交xxxx| 影音先锋欧美在线资源| 国产午夜精品视频| 主播福利视频一区| 97视频在线看| 亚洲欧美日本伦理| 日韩精品视频在线| 色综合91久久精品中文字幕| 国产在线98福利播放视频| 久久精品精品电影网| 91精品综合久久久久久五月天| 欧美性理论片在线观看片免费| 日本成熟性欧美| 亚洲精品一区av在线播放| 国产精品国产亚洲伊人久久| 欧美激情免费在线| 成人性生交大片免费观看嘿嘿视频| 一本一道久久a久久精品逆3p| 亚洲激情免费观看| 欧美精品一区在线播放| 91欧美精品成人综合在线观看| 日韩欧美aaa| 一本一本久久a久久精品综合小说| 日韩av成人在线| 国产欧美日韩亚洲精品| 成人情趣片在线观看免费| 日本成人在线视频网址| 日韩精品电影网| 国产精品一区二区av影院萌芽| 2019中文在线观看| 久久精品中文字幕免费mv| 欧美国产在线电影| 国外成人在线播放| 欧美中文字幕在线观看| 国产成人一区三区| 日韩有码在线视频| 高清在线视频日韩欧美| 在线看福利67194| 视频在线观看一区二区| 热久久这里只有精品| 亚洲色在线视频| 亚洲国产精品网站| 亚洲人成电影网站| 欧美亚洲第一页| 精品久久久视频| 国产精品免费小视频| 国产成人精品免高潮在线观看| 亚洲女同性videos| 亚洲美女免费精品视频在线观看| 久久成年人免费电影| 亚洲男人天天操| 欧美国产视频一区二区| 97国产suv精品一区二区62| 成人中文字幕在线观看| 精品精品国产国产自在线| www.亚洲免费视频| 精品少妇v888av| 亚洲男女性事视频| 中文字幕亚洲欧美日韩在线不卡| 亚洲福利视频网| 日韩精品中文字| 中文字幕日韩电影| 91免费国产网站| 国产精品三级网站| 久久久精品视频在线观看| 亚洲成人亚洲激情| 欧美午夜宅男影院在线观看| xvideos成人免费中文版| 91精品国产电影| 激情亚洲一区二区三区四区| 精品福利在线观看| 久久久女女女女999久久| 欧美巨猛xxxx猛交黑人97人| 欧美性视频网站| 成人精品一区二区三区电影黑人| 中文在线资源观看视频网站免费不卡| 中文字幕一区电影| 日韩av在线看| 精品无人区乱码1区2区3区在线| 国产精品久久久久久久电影| 欧美乱大交xxxxx| 久久久国产一区二区三区| 26uuu另类亚洲欧美日本老年| 波霸ol色综合久久| 久久香蕉国产线看观看网| 日韩精品亚洲视频| 欧美网站在线观看| 欧美精品一本久久男人的天堂| 91精品国产综合久久香蕉| 亚洲午夜精品视频| 国语自产在线不卡| 亚洲成**性毛茸茸| 欧美另类69精品久久久久9999| 91亚洲国产成人久久精品网站| 中文字幕少妇一区二区三区| 日韩欧美成人免费视频| 亚洲精品一区二三区不卡| 欧美中文字幕第一页| 日韩欧美在线播放| 日韩欧美在线视频日韩欧美在线视频| 亚洲精品在线91| 国产精品中文在线| 国产精品人成电影| 自拍视频国产精品| 日韩av观看网址| 成人性生交大片免费观看嘿嘿视频| 一区二区三欧美| 午夜精品久久久99热福利| 国产日韩欧美中文| 欧美精品激情视频| 欧美在线一级va免费观看| 欧美野外wwwxxx| 欧美乱大交xxxxx| 在线免费看av不卡| 亚洲精品久久久久久久久久久| 亚洲国产成人爱av在线播放| 亚洲精品日产aⅴ| 亚洲欧美福利视频| 国产一区二区三区高清在线观看| 91精品国产高清久久久久久久久| 韩国视频理论视频久久| 久久久亚洲精品视频| 国产成人综合av| 性金发美女69hd大尺寸| 91精品视频免费看| 色噜噜狠狠狠综合曰曰曰88av| 久久欧美在线电影| 色综合久久精品亚洲国产| 成人在线国产精品| 亚洲精品日韩久久久| 色综合亚洲精品激情狠狠| 国产日韩在线免费| 超碰91人人草人人干| 欧美日韩亚洲91| 日本欧美一级片| 亚洲日本成人女熟在线观看| 亚洲精品欧美一区二区三区| 91成人性视频| 国产精品久久久久久久久久久久| 欧美特级www| 国产精品视频中文字幕91| 久久久久久久久久久久久久久久久久av| 国产精品a久久久久久| 欧美大片va欧美在线播放| 国产福利精品av综合导导航| 成人免费网站在线观看| 欧美一级电影在线| 亚洲欧美在线播放| 欧美成人国产va精品日本一级| 久久夜色精品国产亚洲aⅴ| 91经典在线视频| 国产成人精品免高潮在线观看| 久久精品国产视频| 国产美女久久精品香蕉69| 久久影院资源网| 欧美一区二区三区四区在线| 欧美日韩国产一区二区| 亚洲精品国产综合久久| 91香蕉嫩草神马影院在线观看| 上原亚衣av一区二区三区| 日韩精品丝袜在线| 欧美综合第一页| 日韩精品在线免费观看视频|