本文只作为异常的参考解决方法, 不表示该异常的唯一解决答案.以下是这些异常的环境(pom.xml):
<properties>
<endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<!--spring framework-->
<spring-framework.version>3.2.17.RELEASE</spring-framework.version>
<!-- spring mvc data to json-->
<jackson.version>1.9.13</jackson.version>
<shiro.version>1.3.2</shiro.version>
<aspectj.version>1.8.10</aspectj.version>
</properties>
java.lang.IllegalStateException:
Expected raw type form of org.springframework.web.servlet.handler.AbstractHandlerMethodMapping$Match
参考: 可能是Spring framework的版本与当前的AspectJ不兼容,去看Spring framework的依赖信息
spring-framework-github 明显上面的版本过高,现在项目跑的是AspectJ 1.8.6
java.lang.IllegalArgumentException:
Pointcut is not well-formed: expecting ‘identifier’ at character position 0
参考: pointcut表达式语法错误, aspectJ 会提示出错的位置
java.lang.IllegalArgumentException:
error at ::0 formal unbound in pointcut
参考: 参数从pointcut中无法获取.例如:
@Before(value="* net.a.b.web.controller.*Controller.*(..) && target(bean) && @annotation(strategyAnnotation)", argNames="bean,strategyAnnotation")
Shiro注解导致DispatcherServlet无视图返回
点什么都会出现404错误.
参考:项目名-servlet.xml(Spring MVC的配置默认命名规则),以下是shiro中关于注解的配置
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor"/>
<bean class="org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor">
<property name="securityManager" ref="securityManager"/>
</bean>
试试将DefaultAdvisorAutoProxyCreator作以下修改
<!-- shiro 控制器上的注解:RequiresRoles && RequiresPermissions -->
<bean class="org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator" depends-on="lifecycleBeanPostProcessor">
<!-- 因自定义AspectJ拦截Controller-->
<property name="proxyTargetClass" value="true" />
</bean>