一, Spring 框架概述
1, 轻量级的 Java EE 开源框架, 它是由 Rod Johnson 为了解决企业应用程序开发的复杂性而创建,
Spring 框架提供了一个开发平台, 用于整合其他技术, 例如 Struts,Hibernate,Mybatis 等.
例子:
把 Spring 比作一台电脑的主板, 它为各种硬件设施 (CPU, 内存, 硬盘) 提供了接口,
这样做的好处是, 在改善系统的结构方面, 更利于系统的扩展和升级.
2, 包含的内容:
IoC 容器(控制反转 IoC, 依赖注入 DI)
AOP 实现(面向切面编程)
数据访问支持
简化 JDBC/Hibernate 编码
声明式事务
web 集成
3, 作用:
a, 实现一个全方位的整合框架, 实现 "一站式" 的企业应用开发
b, 提供了整合其他技术的 API
c, 提供了创建对象的功能, 这样 Spring 就编程了一个大的工厂, 所以 spring 是一个具有工厂功能的框架
d,spring 提供了两种非常重要的机制 IoC 和 AOP, 这样的好处是降低了组件对象之间的耦合度, 实现了对象之间的解耦.
4,Spring 优点
低侵入式设计
独立于各种应用服务器
依赖注入特性将组件关系透明化, 降低了耦合度
面向切面编程特性允许将通用任务进行集中式处理
与第三方框架的良好整合
二, Spring 框架基本应用
1, 对象创建功能
使用配置文件:
a. 添加 spring-IoC 开发 jar 包到工程
b. 在 src 下添加 applicationContext.xml 配置文件
c. 将 bean 组件在配置文件中定义(bean 组件也就是程序中需要使用 spring 创建的对象),
d. 实例化 spring 容器对象, 调用 getBean("标示符")获取 Bean 对象.
使用 Spring IoC 解耦合步骤:
创建工程并添加 Spring 的 jar 包
创建业务层和数据访问层接口
编写业务层和数据访问层实现类
在业务实现类中添加 DAO 接口引用和相关访问器, 注意 JavaBean 命名规范
编写 Spring 配置文件, 完成业务层和数据访问层装配
2,IoC 机制
A, 概念:
控制反转, 可以理解为组件之间的调用, 将组件对象的创建和关系的建立由第三方框架或容器负责.
B,IoC 实现原理 ---- 依赖注入(DI)
当两个组件存在使用关系时, 也就是存在依赖关系时.
依赖关系建立可以通过以下几种注入途径:
a,setter 方式注入, 通过 set 方法将 DAO 传入
在 Action 中定义属性变量和 set 方法
在定义配置时, 指定注入
b, 构造方式注入
通过构造器将 DAO 传入
在 Action 中定义属性变量和带参数的构造方法
在定义配置时, 指定注入
C, 实现思想
将组件对象的控制权从代码本身转移到外部容器
组件化的思想: 分离关注点, 接口和实现分离
依赖的注入: 将组件的构建和使用分开(运行时注入)
目的: 解耦合. 实现每个组件时只关注组件内部的事情
要点: 明确定义组件间的接口
D,Spring Bean 封装机制
Spring 以 Bean 的方式管理所有的组件, Java EE 的全部组件都被视为 Bean 管理
Bean 在 Spring 的容器中运行, Spring 负责创建 Bean 的实例, 并管理其生命周期
E,Bean 的作用域
singleton 在 Spring 容器中仅存在一个共享的 Bean 实例
prototype 每次从容器中都获取一个新的实例
request 每次 HTTP 请求都会创建一个新的 Bean 实例
session 同一个 HTTP 请求共享一个 Bean 实例
global session 同一个全局 Session 共享一个 Bean 实例
如何使用:
唯一实例:(Bean 的作用域默认情况就是为单例: scope="singleton")
或
创建新实例:
- <bean id="user" class="entity.User" scope="prototype" />
- 1 F,BeanFactory
由 org.springframework.beans.factory.BeanFactory 接口定义
方法:
- getBean(String name)
- containsBean(String name)
- getType(String name)
它是工厂模式 (Factory pattern) 的实现, 主要负责创建和管理 bean
子接口: ApplicationContext
实现类 ClassPathXmlApplicationContext
实现类 FileSystemXmlApplicationContext
如何使用整合多个配置文件:
- ApplicationContext context = new ClassPathXmlApplicationContext(
- new String[] {
- "conf/beans1.xml" , "conf/beans2.xml"
- } );
3,AOP 机制
A, 概念:
AOP 又被称为面向方面编程, 其实就是在面向对象的基础上又进行了一次封装, 由于面向对象是将共同的属性和方法封装起来,
而面向切面编程则是面向共同的方面逻辑, 如事务和异常, 所有的对象都会产生这样一个共性的方面.
它将复杂的需求分解出不同方面, 将散布在系统中的公共功能集中解决
面向切面编程:
是一种通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态添加功能的技术
B, 为什么使用 AOP?
a, 就是为了方便, 把自己做的事情都让 Spring 容器去做了. 用了 AOP 能让开发人员少写很多代码
b, 就是为了更清晰的逻辑, 可以让我的业务逻辑去关注自己本身的业务, 而不去想一些其他的事情. 这些其他的事情包括: 安全, 事物, 日志等等.
B,OOP 与 AOP 的区别:
这两种设计思想在目标上有着本质的差异. 具体如下:
OOP: 针对业务处理过程的实体及其属性和行为进行抽象封装, 以获得更加清晰高效的逻辑单元划分
AOP: 针对业务处理过程中的切面进行提取, 它所面对的是处理过程中的某个步骤或者阶段,
以获得逻辑过程中各部分之间低耦合的隔离效果.
详细参
来源: http://www.bubuko.com/infodetail-3257817.html