You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@shiro.apache.org by "Francois Papon (Jira)" <ji...@apache.org> on 2021/08/03 10:41:00 UTC

[jira] [Commented] (SHIRO-829) LifecycleBeanPostProcessor和ShiroFilterFactoryBean在同一个Configuration中导致aop失效

    [ https://issues.apache.org/jira/browse/SHIRO-829?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17392235#comment-17392235 ] 

Francois Papon commented on SHIRO-829:
--------------------------------------

Hi [~xcz] can you write in english please?

> LifecycleBeanPostProcessor和ShiroFilterFactoryBean在同一个Configuration中导致aop失效
> --------------------------------------------------------------------------
>
>                 Key: SHIRO-829
>                 URL: https://issues.apache.org/jira/browse/SHIRO-829
>             Project: Shiro
>          Issue Type: Bug
>          Components: Integration: Spring
>    Affects Versions: 1.7.1
>         Environment: springboot:1.5.21.RELEASE
> spring:4.3.24.RELEASE
>            Reporter: chenzhi.xu
>            Assignee: Les Hazlewood
>            Priority: Major
>         Attachments: image-2021-08-03-18-24-02-370.png
>
>
> LifecycleBeanPostProcessor和ShiroFilterFactoryBean在同一个Configuration类中定义时导致Realm依赖的单例aop失效(事务和cache)。
> 原因是org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory#getTypeForFactoryBean
> !image-2021-08-03-18-24-02-370.png!
> 图中1处希望解析FactoryBean的返回类型,当无法根据签名解析时进入2逻辑,因为LifecycleBeanPostProcessor提前初始化导致Configuration类被作为FactoryBean已经存在,导致继续执行实例化。导致依赖提前于其他BeanPostProcessor实例化。
> 解决办法也很简单,将ShiroFilterFactoryBean的签名改为
> *public class ShiroFilterFactoryBean implements FactoryBean<AbstractShiroFilter>, BeanPostProcessor* 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)