仿写一个简陋的 IOC/AOP 框架 mini-spring (4)

定义一个 RapAspect 类如下:

@Aspect @Component public class RapAspect { // 定义切点,spring的实现中, // 此注解可以使用表达式 execution() 通配符匹配切点, // 简单起见,我们先实现明确到方法的切点 @Pointcut("com.caozhihu.spring.service.serviceImpl.Rapper.rap()") public void rapPoint() { } @Before("rapPoint()") public void singAndDance() { // 在 rap 之前要先唱、跳 System.out.println("first,singing <chicken is too beautiful>."); System.out.println("and the chicken monster is dancing now."); } @After("rapPoint()") public void basketball() { // 在 rap 之后别忘记了篮球 System.out.println("oh! Don't forget my favorite basketball."); } }

织面类 RapAspect 定义了切入点以及前置后置通知等,这样 RapController 中使用 @AutoWired 注解引入的 Rap 对象,会被替换为增强的 Rap 代理对象,如此,我们无需改动 RapController 中任何一处代码,就实现了在 rap() 方法前后执行额外的代码(通知)。

增加 RapAspect 后,再次访问会在 IDE 控制台输出:

first,singing <chicken is too beautiful>. and the chicken monster is dancing now. CXK rapping... oh! Don't forget my favorite basketball. 总结与参考

没啥好说的,该说的,都说了,你懂得,就够了,怎么有某一种悲哀.... 哈哈哈哈

仿写一个简陋的 IOC/AOP 框架 mini-spring

参考

tomcat 使用与框架图:手写一个简化版Tomcat
gradle 配置与 DI 部分实现:慕课网
Spring 常用注解 how2j SPRING系列教材

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpypzx.html