spring是一个轻量级的应用开发框架(平台)。作为一个平台,spring抽象了在许多应用开发中碰到的共性问题。
spring是一个分层的架构。核心层包括IOC(Inject Object Container)依赖注入容器和AOP(Aspect Oriented Programming)面向切面编程。
IoC负责管理bean,包括初始化过程和依赖注入过程。
初始化过程完成的主要工作是在IoC容器中建立BeanDefinition数据映射。
1、通过Resource接口定位bean
2、载入、分析生成对应的BeanDefinition
3、向IoC容器注册BeanDefinition(放到Map)。
依赖注入过程:用户第一次向IoC容器索要Bean时触发。BeanFactory.getBean,该接口的实现就是触发依赖注入发生的地方。getBean是依赖注入的起点,之后会调用createBean。在这个过程中,Bean对象会依据BeanDefinition定义的要求生成。生成Bean对象的方式有使用CGLIB和JVM的反射功能。在生成Bean对象之后,依据BeanDefinition来处理依赖关系,将Bean对象设置到依赖该Bean的Bean对象属性中。设置的过程是先取得注入属性的set方法,然后通过反射机制,把对象注入进去。在Bean的创建和对象依赖注入的过程中,需要依据BeanDefinition的信息来递归地完成依赖注入。
在Bean创建和依赖注入完成以后,在IoC容器中建立起一系列依靠依赖关系联系起来的Bean,通过IoC容器的相关接口方法,就可以非常方便地供上层应用使用了。