程序员社区

SpringAop实现

Hello,欢迎来到程序员社区。 今天聊一聊 SpringAop实现,希望对编程电子书汇总大家有所帮助。

Java面试手册PDF下载:点击下载最全Java面试手册

                
                

想理解aop比较深之前,可以先阅读aop的一些知识,然后在结合实际操作进行比较深入的理解。

概念

AOP 面向切面编程

实操

1.首先,当然是搭建一个项目啦,可以选择idea快速搭建一个springboot项目
2.想要进行切面肯定要有一个目标对象和切面对象,方便理解我们分别命名为Target和TargetAspect,代码如下:

public class Target {

    public Target() {
        System.out.println("Target构造方法执行了");
    }

    public void getup() {
        //  int a = 40/0;
        System.out.println("起床了");
    }

    public void sleep(){
        System.out.println("快该睡觉了");
    }
}
@Aspect
public class TargetAspect {

    @Pointcut("execution(* com.springaop.demo.Target.*(..))")
    public void pointcut() {
    }

    @Before("pointcut()")
    public void st编程电子书汇总art() {
        System.out.println("前置通知");
    }

    @After("pointcut()")
    public void end() {
        System.out.println("后置通知");
    }

    @AfterReturning("pointcut()")
    public void finished() {
        System.out.println("后置返回通知");
    }

    @AfterThrowing("pointcut()")
    public void exception() {
        System.out.println("异常通知");
    }

/*    @Around("pointcut()")
    public void around() {
        System.out.println("环绕通知");
    }*/

}

简单赘述一下,Pointcut是切点,代码角度看是一个表达式,切面通过切点寻找到Target目标对象,@Pointcut(“execution(* com.springaop.demo.Target.*(…))”),里面是目标对象,execution指的是执行哪些对象,是通配符,(…)指的是方法形参,有参无参都可以,()的话就必须是无参方法,修饰pointcut()方法是目标对象执行都会切这一个方法。
3.有了目标对象和切面对象,剩下的就是将这两个类进行实例化,通过bean的形式注入进来,这里我们需要开启
*@EnableAspectJAutoProxy**注解,必须加@Bean哦,不然无法被spring所管理,代码如下:

@EnableAspectJAutoProxy
public class Config {

    public Config(){
        System.out.println("Config构造方法执行了");
    }
    @Bean
    public Target runner() {
        return new Target();
    }

    @Bean
    public TargetAspect runAspect() {
        return new TargetAspect();
    }

}

最后一步就是调用他们啦,代码如下:

@ConfigurJava面试手册ation
public class Main {
    public Main(){
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(Config.class);
        Target bean = annotationConfigApplicationContext.getBean(Target.class);
  编程电子书汇总      beaJava面试手册n.getup();
    }
}

写@Configuration注解是因为,加入了这个注解就会被springboot自动识别,原因是被@SpringBootApplication识别,到此大功告成,加一波效果图:
SpringAop实现插图

> 时间不一定能证明很多东西,但是一定能看透很多东西。坚信自己的选择,不动摇,使劲跑,明天会更好。

赞(0) 打赏
未经允许不得转载:IDEA激活码 » SpringAop实现

一个分享Java & Python知识的社区