使用 Spring AOP 代理Controller方法失效的问题
引起失效原因
在web 程序中即初始化Spring 容器 又初始化了Web容器.
解决方法
- 找到Spring Mvc 加在的xml文件
- 开启Spring Mvc 扫描注解
<!-- Scan the controller package and the sub package -->
<context:component-scan base-package="cn.*" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Controller" />
<context:include-filter type="annotation" expression="springfox.documentation.swagger2.annotations.EnableSwagger2" />
</context:component-scan>
- 开启 Spring AOP 注解
<!-- ========================= ASPECT CONFIGURATION ======================== -->
<!-- Tell spring to use CGLib to proxy class (default is JDK's proxy) -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
- 配置 Spring 的扫描注解
<!-- enable autowire -->
<!-- context:annotation-config /-->
<!-- Scan the service package and the sub package -->
<context:component-scan base-package="cn.*" use-default-filters="false">
<context:include-filter type="annotation" expression="org.springframework.stereotype.Service" />
<context:include-filter type="annotation" expression="org.springframework.stereotype.Component" />
</context:component-scan>
- 开启 Spring AOP 注解
<!-- ========================= ASPECT CONFIGURATION ======================== -->
<!-- Tell spring to use CGLib to proxy class (default is JDK's proxy) -->
<aop:aspectj-autoproxy proxy-target-class="true"/>
Spring MVC 需要引入的 location
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd">
Spring XML 需要引入的 location
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:aop="http://www.springframework.org/schema/aop"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:task="http://www.springframework.org/schema/task"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task.xsd"
default-autowire="byType">