1.Spring概况
1.简介
spring是一个轻量级控制反转和面向切面的容器框架,它主要解决企业应用开发复杂性。
分层结构
功能:使用JavaBean代替EJB
范围:适用于任何应用
2.起源
优势:全面和模块化;从底部帮你编写易于测试的代码;一站式解决方案
优点:低侵入式设计,代码污染少;一次编写,到处运行;降低耦合性;
AOP提供通用任务集中管理;DRM,DAO简化数据库访问
Spring源码是学习Java的经典范例
3.核心模块
2.Spring之IOC
IOC,反转控制,
传统开发,例子:自己找女朋友
IOC容器管理对象依赖关系,例子:通过婚介找女票
理论背景如图:
IOC其实也是DI
一个例子:对象A在运行过程中需要对象B,以前是A对象控制对象B的生成,现在有IOC容器不一样了,当A需要B时,IOC立即给A一个对象B,控制权反转了,所以叫控制反转。
好处:解耦;提高开发效率;提高复用性;热插拔特性
**IOC和DI:**IOC讲的是创建对象实例的控制权从代码剥离到IOC容器,实际就是在xml文件中控制,侧重原理。DI讲的是创建对象示例时,为这个对象注入属性值或其他对象示例,侧重于实现。
3.Spring之AOP
AOP,面向切面编程,是OOP的补充和延续。
AOP专门处理系统中各个模块交叉关注点,如事务管理、安全检查、缓存、日志管理、对象池等。
AOP关键概念:
- 切面(Aspect),如日志类
- 连接点(JoinPoint),加入切面的那个点
- 通知(Advice)
- 切入点(Point Cut)
- 引入(Introduction)
- 目标对象(Target Object)
- AOP代理(AOP Proxy)
- 织入(Weaving)
AOP通俗理解:一个组件A,不去关心常用组件B,但当A使用B时,不是他自己去调用B,而是通过配置等其他方式,比如Spring中通过xml配置文件。A可以不知道B服务是怎么样的,A只关心自己的业务逻辑,当调用B时让配置文件去做,具体的与A无关。