Spring概况:
java 开源框架,学习网站:http://spring.io 相关文档:http://projects.spring.io/spring-framework/
一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架:
- 从大小与开销两个方面而言 Spring 都是轻量级的
- 通过控制反转(IoC)的技术达到松耦合
- 提供了面向切面编程的丰富支持,允许通过分离应用的业务逻辑与系统级服务进行内聚性的开发
- 包含并管理应用对象的配置和生命周期(容器)
- 将简单的组建配置、组合成为复杂的应用(框架)
Spring 带了复杂的 JavaEE 开发的春天
作用:
容器
多种技术支持
jms
MQ 支持
Unittest 等
AOP
提供辅助类(JDBC Templalate等)
对主流应用框架(Hibernate 等)提供支持
适用范围:
构建企业应用(SpringMVC+Spring+Hibernate/ibatis)
单独适用 bean 容器(bean 管理)
单独适用 AOP 进行切面处理
其他的 Spring 功能,如:对消息的支持等
互联网应用
框架:
与类库的区别
框架一般是封装了逻辑、高内聚的,类库则是松耦合的工具组合
框架专注于某一领域,类库则是更通用的
#IOC
面向接口编程
- 依赖接口,而非实现类
- 隐藏具体实现,实现多态性的组建
IOC:控制反转 控制权的转移,应用本身不负责依赖对象的创建和维护,而是由外部容器负责创建和维护
DI(依赖注入 Dependency Injection),一种控制反转的的实现方式
目的:创建对象并且组装对象之间的关系
Spring 的 Bean 配置,xml 方式(另一种方式是 注解)
Bean 容器初始化:
基础包
- org.springframwork.beans : BeanFactory
- org.springframwork.context : ApplicationContext
Spring 注入
启动 Spring 容器加载 bean 配置时,完成对变量的赋值行为
两只方式:
设值注入 <property name ="injectionClass" ref="injectionBeanID">
构造注入 <constructor-arg name="injectionClass" ref="injectionBeanID">
#Bean
常用配置项:
Id, Class, Scope(作用域), Constructor arguments( 构造参数), Properties, Autowiring mode(自动装配), lazy-initialization mode(懒加载), Initialization/destruction method,
Bean 的作用域:
singleton :单例,每个容器中只存在一份
prototype:每次请求创建新的实例,destroy 方式不生效
request:每次 http 请求创建一个实例且仅在当前 request 内有效
session:同上,每次 http 请求创建,当前 session 内有效
global session:基于 portlet 的 web 中有效(protlet 定义了 global session ),如果是在 web 中同 session