什么是基于注解的切面实现

总结:
用注解的方式实现的面向切面编程(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("关闭事务");
    }

}

你可能感兴趣的:(什么是基于注解的切面实现)