架构探险 代码逻辑
IOC容器:
1. 创建初始化类,并且重写init方法
2. 先扫描指定包下所有类,加载到类集合中,不初始化。
3. 从类集合获取类名带service,controller注释的类,实例化后放到Bean集合中
4. 读取Controller类,获取方法请求集合
5.
请求拦截器:
AOP:
1. 获取所有继承AspectProxy的类,获取注释对应类,放入Proxy集合中,格式:【切面代理(未实例化),被代理类的集合】
2. 遍历Proxy集合,实例化切面代理,放入集合targetMap,格式:【被代理类,切面代理(实例化)】
3. 遍历targetMap,实例化被代理类的动态代理,替换BeanMap中原来的被代理类的实例。