1.Spring概述
1.1 spring 简介
- Spring是分层的Java SE/EE应用full-stack 轻量级开源框架,以IoC(overee Of Control:反转控制)和AOP(Aspect Ori ented Programming:面向切面编程)为内核,
- 提供展现层Spring MVC 和持久层 Spring JDBC
1.2优势
方便解耦,简化开发。
通过Spring提供的IoC容器,不必对单例模式等,属性文件解析编写带啊吗,可以更加专注上层应用
AoP编程的支持
通过Spring的AOP功能,方便
声明式事务的支持
通过声明式方法灵活的进行事务管理,提高开发效率和质量
方便程序测试
可以用非容器的编程方式进行测试
方便集成各种优秀框架
降低JavaEE API的使用难度
java源码经典学习范例
1.3体系结构
核心容器 IOC
AOP
2.Spring快速入门
2.1 Spring程序开发步骤
- 导入Spring开发的基本包坐标
- 编写Dao接口和实现类
- 创建Spring核心配置文件
- 在Spring配置文件中配置UserDaolmpl
- 使用Spring的API获得Bean实例
导入坐标
创建接口,实现接口
创建applicationContext.xml
导入
使用spring API获得实例 ApplicationContext app = new ClassPathXmlApplicationContext(“applicationContext.xml”);
UserDao userDao = (UserDao)app.getBean(“userDao”);
3.Spring 配置文件
3.1 Bean 标签的基本配置
$id:$ 唯一性标识,不允许重复
$class:$ Bean的路径
$scope:$ 值对象的作用范围,取值如下
取值范围 | 说明 |
---|---|
singleton | 默认值,单例的 |
prototype | 多例的 |
request | WEB项目中,Spring 创建一个 Bean的对象,将对象存入到request域中 |
session | WEB项目中,Spring 创建一个 Bean的对象,将对象存入到session域中 |
globalSession | WEB项目中,应用在Portlet环境,如果没有Portlet环境那么相当global session于session |
3.2 Bean标签范围配置
测试对象Bean的创建时期
当设计模式为singleton时,一旦配置文件被加载,实例也被构造了。
当设计模式为prototype, 加在配置文件不会创建对象,只有getBean时创建
1)当scope的取值为singleton时
Bean的实例化个数:1个
Bean的实例化时机:当Spring核心文件被加载时,实例化配置的Bean实例 Bean的生命周期: ● 对象创建:当应用加载,创建容器时,对象就被创建了
● 对象运行:只要容器在,对象一直活着
● 对象销毁:当应用卸载,销毁容器时,对象就被销毁了
2)当scope的取值为prototype时
Bean的实例化个数:多个
Bean的实例化时机:当调用getBean0方法时实例化Bean
● 对象创建:当使用对象时,创建新的对象实例
● 对象运行:只要对象在使用中,就一直活着
● 对象销毁:当对象长时间不用时,被Java的垃圾回收器回收了
3.3 Bean生命周期配置
|
|
init-method 初始化
destroy-method 销毁
app.close() 注意 不能时ApplicationContext使用 ClassPathXmlApplicationContext
3.3 Bean的三种构建方法
无参构造方法实例化
工厂静态方法实例化
工厂实例方法实例化
3.4 Bean的依赖注入的数据类型
普通数据类型
引用数据类型
集合数据类型
4. Spring相关API
4.1 ApplicationContext继承体系
4.2 ApplicationContext的实现类
1)ClassPathXmlApplicationContext它是从类的根路径下加载配置文件推荐使用这种
2)FileSystemXmlApplicationContext它是从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置。
3)AnnotationConfigApplicationContext当使用注解配置容器对象时,需要使用此类来创建spring容器。它用来读取注解。
4.3 getBean方法使用
app.getBean(“id”) 如果配置文件总有多个相同类的bean,需要使用id
app.getBean(class) 如果配置文件中,只存在一个Bean,则可以使用该方法