Spring AOP
学习来源:遇见狂神说
1.
package com.wang.diy;
//使用注解方式实现AOP
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
import org.aspectj.lang.annotation.*;
@Aspect//标注这个类为切面
public class AnnotationPoint {
@Before("execution(* com.wang.service.UserServiceImpl.*(..))")
public void before() {
System.out.println("+++++方法执行前+++++");
}
@After("execution(* com.wang.service.UserServiceImpl.*(..))")
public void after() {
System.out.println("+++++方法执行后+++++");
}
//补充:
//在环绕增强中,我们可以给定一个参数,代表我们要处理切入的点
@Around("execution(* com.wang.service.UserServiceImpl.*(..))")
public void aroud(ProceedingJoinPoint joinPoint) throws Throwable {
System.out.println("环绕前");
Signature signature = joinPoint.getSignature();//获得签名,就是这个类的信息
System.out.println("signature:" + signature);
//执行方法,joinPoint.proceed !!!!!
Object proceed = joinPoint.proceed();
System.out.println("环绕后");
System.out.println(proceed);
}
}
<?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"
xsi:schemaLocation="http://www.springframework.org/schema/beans
https://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/aop
https://www.springframework.org/schema/aop/spring-aop.xsd">
<!-- 注册bean-->
<bean id="userServiceImpl" class="com.wang.service.UserServiceImpl"/>
<bean id="log" class="com.wang.log.Log"/>
<bean id="afterLog" class="com.wang.log.AfterLog"/>
<!-- 方式三:注解-->
<bean id="annotationPoint" class="com.wang.diy.AnnotationPoint"/>
<!-- 开启注解支持!-->
<aop:aspectj-autoproxy/>
</beans>
import com.wang.service.UserService;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class MyTest {
@Test
public void Test() {
ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
//动态代理代理的是接口,返还的也得是接口,而不能是UserServiceImpl
UserService userService = (UserService) context.getBean("userServiceImpl");
userService.add();
}
}