01. Spring 是什么
Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架;
以 ioC (Inverse of Control 反转控制) 和 AOP (Aspect OrientedProgramming 面向切面编程) 为内核;
>> 提供了 展现层 SpringMVC 和 持久层 Spring JDBCTemplate 以及 业务层事务管理 等众多的企业级应用技术,
还能整合开源世界众多著名的第三方框架和类库,逐渐成为使用最多的 Java EE 企业应用开源框架;
>>优势
a. 方便解耦,简化开发;
通过ioc容器,将对象间的依赖关系交由 Spring 进行控制;避免硬编码过程中造成过度耦合;
b. AOP编程的支持
通过 Spring 的AOP功能,方便进行面向切面编程,许多不容易用传统OOP实现的功能可以通过AOP轻松实现;
c. 声明式事务的支持
可以将我们从单调的事务管理代码中解脱出来,通过声明式方式灵活的进行事务管理,提高开发效率和质量;
d. 方便程序的测试
可以通过非容器依赖的方式进行几乎所有的测试工作,测试不再是昂贵的操作,而是随手可做的事情;
e. 方便集成各种优秀框架
Spring 对各种优秀框架的支持;( Struts, Hibernate, Hessian, Quartz等);
f. 降低JavaEE API 的使用难度;
Spring 对 JavaEE API (如JDBC, JavaMail, 远程调用等)进行了薄薄的封装,使这些API的使用难度大大的降低;
g. Java源码是经典的学习范例;
02. Spring 的体系结构
03. Spring 的开发步骤
a. 导入Spring 开发的基本包坐标;
b. 编写Dao接口及实现类
c. 创建 Spring 配置文件 (文件名随意,但一般大家都命名为 applicatonContext.xml)
d. 在核心配置文件中,配置实现类对应的 bean 配置
f. 调用 (此时,不再通过 UserDao userDao = new UserDaoImpl() 来获取实例化对象了,而是通过Spring 来获取)
04. bean 标签的参数配置
a. id: 唯一标识号;不允许重复
b. class: 实现类的全限定类名;
c. scope: 指定对象的作用范围;
>> 默认为 singleton : 在加载核心配置文件时,将配置对象进行实例化
prototype: 在 getBean 时,实例化对象;
d. 生命周期配置
05. Bean实例化的三种方法
a. 无参构造方法实例化; (掌握)
(上面的例子,走的都是无参构造的方法);
b. 工厂 静态 方法实例化;(了解)
c. 工厂 实例 方法实例化;(了解)
06. bean标签的依赖注入
依赖注入 (Dependency Injection): 它是 Spring 框架核心 IOC 的具体体现;
在编写程序时,通过控制反转,把对象的创建交给了Spring, 但是代码中不可能出现没有依赖的情况,
IOC 解耦的只是降低它们的依赖关系,但不会消除;如: 业务层仍旧会调用持久层的方法;(Service > Dao)
> 这种业务层和持久层的依赖关系,在使用Spring 后,就让Spring 来维护了;
> 简单的说,就是 谁使用,谁创建;而不需要我们再去创建了;
>> 注入方法:
a. 构造方法;
b. set方法;
>> 关于set 注入方法的简便方式: P命名空间的方式
07. 注入的数据类型
a. 普通数据类型; (本质上还是set注入)
b. 引用数据类型;
参照上面引用注入的例子;
c. 集合数据类型;
** List注入
** Map 注入
** Properties 注入
08. 引入其它配置文件
** 实际开发中,Spring 的配置内容非常的多,这就导致Spring 配置很繁杂且体积很大,所以,可以将部分配置拆解到其它的配置文件中;
而在Spring 主配置文件中,通过 import 标签加载其它配置文件;
<import resource="applicationContext-xxx.xml">
09. 通过类获取实例化对象