SpringAop实现

想理解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 start() {
        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();
    }

}

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

@Configuration
public class Main {
    public Main(){
        AnnotationConfigApplicationContext annotationConfigApplicationContext = new AnnotationConfigApplicationContext(Config.class);
        Target bean = annotationConfigApplicationContext.getBean(Target.class);
        bean.getup();
    }
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值