Spring
1)首先是区分依赖注入(DI)和控制反转(IoC)
IoC---Inversion of Control IoC是一种让服务消费者不直接依赖服务提供者的组件设计方式,是一种减少类与类之间依赖的设计模式。
DI---Dependency Injection是组件之间的依赖关系在运行期决定,我们可以通过简单的配置,而无需将指定到目标需要的的资源,完成自身的业务逻辑,而不用关心具体的资源来自何处,由谁决定。
个人觉得可以这样理解:
IoC是目的,DI是手段。
IOC:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理。
DI:说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现。
它们是spring核心思想的不同方面的描述。
具体表现:不直接在程序中创建类对象,从而减少耦合,而是在Spring配置容器的配置文件中,定义类的对象个相关服务。
2)BeanFactory和ApplicationContext
org.springframework.beans和org.springframework.context包是Spring IoC容器的基础。前者提供高级配置基础,是的管理人和性质的对象成为可能;后者是前者的扩展,与AOP集成、消息资源处理(国际化处理)、事件传递等。
基础调用过程如下:
如下图,
3)配置文件
用到再看
4)面向切面编程
AOP---Aspect Oriented Programming将与业务无关、却为业务模块共同调用的逻辑或职责,例如事务处理、日志管理、权限控制等,封装起来,便于减少系统的重复代码,降低模块间的耦合度。