其他分享
首页 > 其他分享> > spring学习(四)AOP

spring学习(四)AOP

作者:互联网

cglib代理

动态代理有个约束:目标对象一定是要有接口的,没有接口就不能实现动态代理…..----->因此出现了cglib代理

cglib代理也叫子类代理,从内存中构建出一个子类来扩展目标对象的功能!

写cglib代理步骤:

AOP

Aop: aspect object programming 面向切面编程

步骤:

<beans
xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="
http://www.springframework.org/schema/aop
http://www.springframework.org/schema/aop/spring-aop-3.0.xsd">
</beans>

注解:

@Pointcut表达式解析 execution(modifiers-pattern? ret-type-pattern declaring-type-pattern? name-pattern(param-pattern)throws-pattern?)

括号中各个pattern分别表示:

@Component
@Aspect
public class AOP {
//定义切入点
   @Pointcut("execution(* bean.*.*(..))")
   public void pt(){}

//可以直接写切入点表达式
   @Before("execution(* bean.*.*(..))")
   public void before(){
       System.out.println("开始事务");
  }
   //使用定义好的切入点
   @After("pt()")
   public void after(){
       System.out.println("关闭事务");
  }

   @Around("pt()")
   public void around(ProceedingJoinPoint joinPoint) throws Throwable {
       System.out.println("环绕前...");
       //必须传入ProceedingJoinPoint对象,调用proceed()方法 来执行目标方法
       joinPoint.proceed();
       System.out.println("环绕后...");
  }
}

 

标签:spring,void,AOP,jar,学习,Pointcut,aop,pattern,方法
来源: https://www.cnblogs.com/yjh1995/p/14164346.html