Spring 框架是由于软件开发的复杂性而创建的,Spring 使用的是基本的 JavaBean 来完成以前只可能由 EJB 完成的事。从简单性、可测性和松耦合性角度而言,绝大部分Java 应用都可以用 Spring。
1、控制反转(Inversion of Control, IOC)
控制反转是一种设计原则,用来降低代码之间的耦合度。在传统的程序设计中,高层模块依赖于低层模块的实现细节,导致高层模块依赖低层模块的实现细节,难以进行单元测试。控制反转负责创建对象、管理对象 (通过依赖注入) 、整合对象、配置对象以及管理这些对象的生命周期。
2、依赖注入
依赖注入是Spring 实现 IOC 的一种重要手段,它将依赖关系从代码中移动到配置文件或容器中,实现了依赖的动态注入。依赖注入主要有三种方式:构造器注入、setter方法注入和接口注入。
3、Bean 的生命周期?
(1) Spring 对bean进行实例化。
(2) Spring将值和bean的引用注入到 bean对应的属性中。
(3) 如果bean实现了BeanNameAware接口,Spring将bean的ID传递给setBeanName()方法。
(4) 如果bean实现了BeanFactoryAware接口, Spring将调用setBeanFactory()方法,将bean所在的应用引用传入进来。
(5) 如果bean实现了ApplicationContextAware接日,Spring将调用setApplicationContext()方法,将bean所在的应用引用传入进来。
(6) 如果bean实现了BeanPostProcessor 接口,Spring将调用他们的post-ProcessBeforeInitalization()方法。
(7) 如果bean实现了InitializingBean接口,Sp