Spring设计目标:
Spring是一个轻量级的框架,是一个针对Javabean生命周期,以及对象之间依赖关系进行管理的轻量级容器框架。
在编程中一个对象要完成一定的逻辑操作,需要依赖很多对象来帮助完成,这样类之间就形成了强大的依赖关系。修改一个地方往往牵扯到修改许多的地方。在Spring容器技术开发出来之后,类之间的依赖关系就不需要写在代码中了。容器可以管理对象之间的依赖关系,我们自己不需要创建对象,这部分对象通过容器来完成。
面向Bean
Spring是面向Bean的编程(Bean Oriented Programming,BOP),Bean才是Spring中真正的主角。Spring中没有bean也就没有Spring存在的意义了。Spring通过配置文件或者注解来管理对象以及对象之间的依赖关系。
控制反转(IOC)和依赖注入(DI)
在Spring中,最总要的思想就是控制反转(IOC),依赖注入(DI)是控制反转思想的实现方式。
一句话说控制反转思想:在没有控制反转前,一个对象使用另一个对象需要自己动手去new这个对下,也就是写在代码中。在有控制反转技术以后。对象的创建由Spring容器去完成。Spring容器实现所依赖对象关系的创建和协调,对象只关注业务逻辑本身。
在Spring中所有类都要在IOC容器中登记。告诉Spring容器你是什么类,你的对象需要什么对象。在系统运行的时候,容器会自动把你所需要的对象给你。也把你给其他需要你的对象。所有对象的创建,销毁都由Spring容器来控制。也就是说控制生命周期的不再是引用它的对象,而是Spring容器。
在系统运行中,IOC容器动态的向某一个对象提供它所需要的其他对象。这一点是通过自动注入(DI)技术来实现的。自动注入式通过Java动态反射来实现的。这一点后面会详细探索。
IOC容器关键点:
需要被Spring容器管理的对象必须定义到Spring容器中。
需要定义构造器或者getter,setter方法让Spring将对象注入过来。
面向切面编程(AOP)
面向切面编程(Aspect-Oriented Programming),Aspect 是一种模块化的机制。AOP的本质是在一系列纵向的控制流程中,把那些相同的子流程提取成一个横向的面,面向这些横向的面进行操作。