Spring 带来的好处是:
- Class集合和Bean集合解析
Spring提供了懒加载(@Lazy)的方式,使用ClassLoader.loadClass(), 此方式只会加载类,而不会连接(校验,准备,解析,初始化)
也就是不会执行静态块
,节省初始化的时间。并且解析所有的Class集合
,并且生成Bean集合
- AOP
Spring在main函数初始化的时候,通过AspectJ进行切面的管理
方便织入weave范围和位置
,初始化时将每个配置了注解@
的方式实现成一个代理串和回调方式,通过cglib
或者jdkproxy
,生成动态代理对象实例,加入Class/Bean集合
- IoC(DI)
Spring在AOP完成后,遍历所有的
Bean集合
,对每个Bean中标识
了需要注入
的field从Bean集合中获取进行注入
自此,实现了面向切面
和依赖注入
自此解耦
List<Class<?>> classes = Lists.newArrayList(
// 先加载 class 再加载 bean
ClassHelper.class,
BeanHelper.class,
// bean 在 aop 之前会被 aop 覆盖, aop 在 ioc 之前, 先生成增强类再注入
AopHelper.class,
IocHelper.class,
ControllerHelper.class
);
classes.forEach(clazz -> ClassUtil.loadClass(clazz.getName()));
网友评论