Aop问题的提出
2025-4-20
| 2025-4-20
Words 431Read Time 2 min
type
status
date
slug
summary
tags
category
icon
password

功能太弱

这些只是打印简单的语句,功能太单一,如果可以额外写一个方法,然后插入到对应的位置,那么会更好。
notion image
image-20230215140539512

土方法解决

建新的包,复制proxy2的代码
把简单语句抽取出来成为一个方法

其实就是抽取出来

notion image
image-20230216101301985
notion image
image-20230216101248906

自己写一个极简Aop

单独写一个类
在动态代理里面调用这个方法,这样就实现了解耦
notion image
image-20230216103756721
我们看到很多框架要想达到某一个功能,要先继承一个类,后者实现某一个接口,在方法里面写上我们自己的逻辑,其实,在框架内部,也是像上面一样调用了这个方法。

分析

土方法不够灵活,第一种方法,直接写在方法内部,那么每一个方法都会打印日志,并不能达到某一个方法执行,另一个方法不执行的效果。
虽然抽出了一个类,但只是实现了切面的操作和业务代码的解耦。代理内部写死了private SmartAnimal target_vehicle;,那么只有实现了SmartAnimal这个接口的类才能使用切面,其他接口和类无法使用切面。
土方法是一种硬编码,没有注解和反射的支撑,所以不能完全的灵活。

AOP登场

bean创建顺序AOP的简单实现
Loading...