理一理Spring MVC中使用AspectJ的异常

17 篇文章 0 订阅
1 篇文章 0 订阅

本文只作为异常的参考解决方法, 不表示该异常的唯一解决答案.以下是这些异常的环境(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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值