使用spring aop

本篇文章只用于记录作者使用spring aop的过程,勿喷。

在spring项目中使用其提供的aop可以更加方便的对自己的代码进行扩展,下面是使用的过程:

  1. 在使用之前肯定是要先添加aop的一些依赖
<!--提供切面的注解依赖-->
<dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aspects</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency>
<!--提供代理、包扫描等配置-->
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-aop</artifactId>
        <version>4.3.7.RELEASE</version>
    </dependency> 
  1. 本文使用cglib进行织入
    我这里首先编写了一个配置类,用来对包进行扫描,选择不同的织入方式。
    @Configuration
    @EnableAspectJAutoProxy(proxyTargetClass = true)
    @ComponentScan("com.huang")
    public class Config {
    }
    
    @EnableAspectJAutoProxy中的proxyTargetClass参数用来选择不同的织入方式,true为cglib方式,false为aspectJ方式(本文不对这两种方式进行解释,不过这个大佬的这篇文章讲的很清楚 aop)。
    @ComponentScan定义扫描的包位置
  2. 创建一个接口,规定需要做的动作。
public interface MethodInterface {
    public void s();
}

然后用一个类实现它

@Component("object1")
public class Object1 implements MethodInterface {
    @Override
    public void s() {
        System.out.println("Object1 输出=================");
    }
}
  1. 新建一个类用来添加切面代码
@Aspect
@Component
public class MethodAspect {

    @Pointcut("execution(* com.huang.test.myInterface..*.*(..))")
    public void point1() {}

    @Before("point1()&&within(com.huang.test.myInterface.MethodInterface)")
    public void before() {
        System.out.println("method before被调用============");
    }
}
  1. 最后就是创建一个测试类进行测试了
    这里需要使用spring的ioc来获取实例,因为我们需要用到扫描才能让切面生效。
    @Test
    void test02() {
        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(Config.class);
        Object1 object1 = context.getBean("object1", Object1.class);
        object1.s();
    }

最后调用就能发现生效了
在这里插入图片描述
可能上面有很多地方讲的不对,欢迎指正,谢谢。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值