什么是基于注解的切面实现
总结:
用注解的方式实现的面向切面编程(AOP),可以在某个方法的执行前或者执行后插入一些代码(例如日志功能的代码)。
原理:
参考链接:https://www.cnblogs.com/biehongli/p/6640406.html
1:Aop(aspect object programming)面向切面编程,名词解释:
1.1:功能:让关注点代码与业务逻辑代码分离
1.2:关注点
重复代码就叫做关注点
1.3:切面
关注点形成的类,就叫做切面(类)
面向切面编程,就是指对很多功能都有的重复代码抽取,再在运行的时候往业务方法上动态植入"切面类代码";
1.4:切入点
执行目标对象方法,动态植入切面代码
可以通过切入点表达式,指定拦截那些类的那些方法,给指定的类在运行的时候植入切面类代码;
package com.bie.aop;
import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;
import org.springframework.stereotype.Component;
/**
-
@author BieHongLi
-
@version 创建时间:2017年3月28日 下午9:10:43
-
@Aspect:指定当前类为切面类
*/
@Component //加入到IoC容器
@Aspect //指定当前类为切面类
public class Aop {//指定切入点表达式,拦截那些方法,即为那些类生成代理对象
//@Pointcut("execution(* com.bie.aop.UserDao.save(..))") ..代表所有参数
//@Pointcut("execution(* com.bie.aop.UserDao.())") 指定所有的方法
//@Pointcut("execution( com.bie.aop.UserDao.save())") 指定save方法@Pointcut("execution(* com.bie.aop.UserDao.*(..))")
public void pointCut(){}
@Before("pointCut()")
public void begin(){
System.out.println("开启事务");
}@After("pointCut()")
public void close(){
System.out.println("关闭事务");
}
}