opensolon / solon

🔥 Java "new" application development Framework: Restrained, concise, EFFICIENT, OPEN, ECOLOGICAL!! 300% higher concurrency 50% memory savings Startup is 10 times faster. Packing 90% smaller; Compatible with java8 ~ java22.
https://solon.noear.org
Apache License 2.0
2.22k stars 221 forks source link

修改一下注释错误 #244

Closed CY-1 closed 6 months ago

CY-1 commented 6 months ago

能顺便问一问作者的aop的实现逻辑吗?我最近在学习这方面知识 希望大佬能指出我梳理的流程的错误

目前我的理解是: 1.当我们要把class要创建被放到context容器中时,会先去创建BeanWrap,然后利用BeanWrap去创建目标类。 2.利用BeanWrap创建目标类时,会遍历当前类的所有方法,如果当前类有任何一个方法被注解修饰,并且容器中有注解对应的 BeanInterceptors那么就需要创建BeanInvocationHandler。 3.创建BeanInvocationHandler放到BeanWrap的raw中。最后把BeanWrap放到context容器中 4.BeanWrap放入到容器中后 就可以获取class 5.获取class时 会获取到BeanWrap 然后通过BeanWrap的raw字段拿到BeanInvocationHandler并且返回。 6.当我们调用被增强的方法时,是调用BeanInvocationHandler的invoke方法,在invoke方法会获取MethodWrap,并且执行invokeByAspect方法 7.invokeByAspect方法会调用原本想要加入的功能和函数原本的功能等。

noear commented 6 months ago

关于 aop ,官网有个原理与本质的说明的:)

noear commented 6 months ago

从流程上面讲,你上面整得是对的:)。。官网再看下:IOC/AOP ,及 动态代理的本质。