spring支持aop

配置

xmlns:aop="http://www.springframework.org/schema/aop"

xsd路径不要写错,可以参考看aop的jar包

http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd

默认已经有AOP的包了,增加 aspectjweaver 即可。

<!-- https://mvnrepository.com/artifact/org.aspectj/aspectjweaver -->
<dependency>
    <groupId>org.aspectj</groupId>
    <artifactId>aspectjweaver</artifactId>
    <version>1.8.10</version>
</dependency>

切返回指定类型的方法

<!-- aop -->
<aop:aspectj-autoproxy />
<beans:bean id="controllerAop" class="com.huawei.plm.common.aop.ControllerAOP" />

<aop:config>
	<aop:aspect id="myAop" ref="controllerAop">
		<aop:pointcut id="target" expression="execution(public com.huawei.plm.common.beans.ResultBean *(..))" />
		<!-- 
		<aop:before method="checkValidity" pointcut-ref="target" /> 
		<aop:after method="addLog" pointcut-ref="target" />
		-->

		<aop:around method="handlerControllerMethod" pointcut-ref="target" />
	</aop:aspect>
</aop:config>

强制使用cglib

To force the use of CGLIB proxies set the value of the proxy-target-class attribute of the aop:config element to true:

<aop:config proxy-target-class="true">
    <!-- other beans defined here... -->
</aop:config>

java代码

public class ControllerAOP {
	public ResultBean<?> handlerControllerMethod(ProceedingJoinPoint pjp) {}
}