[SHIRO-804] - Avoid conflicts with spring boot aop #344
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#268
I found the problem related to the resolution order of Configuration. The ProxyCreator automatically created by Spring AOP is implemented through AopAutoConfiguration.
There are two cases:
AopAutoConfiguration
, will create a ProxyCreator, then parseShiroAnnotationProcessorAutoConfiguration
, judge @ConditionalOnMissBean, ProxyCreator already exists, no more ProxyCreator will be created. (good case)ShiroAnnotationProcessorAutoConfiguration
, judge @ConditionalOnMissBean, there is no ProxyCreator, will create a ProxyCreator, then parseAopAutoConfiguration
, will create the ProxyCreator again. (two ProxyCreators exist in the IOC, incorrect case!)My version is:
shiro-spring-boot-starter:1.8.0
spring-boot-starter-aop:2.3.1.RELEASE
So, to be on the safe side, add
@AutoConfigureAfter(AopAutoConfiguration.class)
to theShiroAnnotationProcessorAutoConfiguration
.