【1 Spring 简介】2020年黑马SSM最新就业班Spring+SpringMVC+Mybatis教程笔记
1 Spring 简介
1.1 Spring是什么
- Spring是分层的javaee/javase应用full-stack(这里是各层都有解决方案的意思)轻量级开源框架,以IOC(反转控制)和AOP(面向切面编程)为内核(IOC,反转控制:反转bean的创建权)
- 提供了展现层SpringMVC和持久层Spring JDBCtemplate以及业务层事务管理等众多的企业级应用技术,还能整合开源世界众多著名的第三方框架和类库,使用广泛
1.2 Spring的优势:
-
方便解耦,简化开发
通过Spring提供的IOC容器,可以将对象间的依赖关系交由Spring进行控制,避免硬编码造成过耦合,避免了创建对象时直接进行new,而是交给了Spring容器
-
AOP的变成支持
通过Spring提供的AOP功能,面向切面编程
-
声明式事务的支持
通过声明式方式灵活的进行事务管理,提高开发效率
-
方便程序测试
Spring可以集成JUnit
-
方便集成各种优秀的框架
-
降低JavaEEAPI的使用难度
1.3 Spring的体系结构:
- 层层递进
-
核心容器:四部分
Beans:产生bean对象
core:核心
context:上下文
spEL:Spring的表达式语言
-
Data Access:数据访问层
-
Web层
2 Spring快速入门:
- 开发步骤:
- 导入Spring开发的基本包坐标
- 编写Dao接口和实现类
- 创建Spring核心配置文件 applicationContext.xml
- 在Spring配置文件中配置UserDaoImpl
- 使用Spring的API获得Bean实例
3 Spring配置文件
3.1 bean标签的基本配置
用于配置对象交由Spring来创建,默认情况下调用的是类中的无参构造函数,如果没有则不能成功
id 唯一性表示
class 全限定类名
3.2 bean标签的范围配置
scope:
- singleton 默认值,单个的,容器中存在的对象只有一个,对象在加载Spring核心配置文件时创建,销毁容器时对象被销毁
- prototype 多个的,容器中存在的对象可以有多个,对象在每次getBean()时创建,对象长时间不使用时,被java垃圾回收器回收
- request
- session
- global session
3.3 bean生命周期配置
init-method:定义类的初始化方法名称
destroy-method:定义类中销毁方法名称
3.4 bean实例化三种方式
无参构造方法实例化(重点)
工厂静态方法实例化
工厂实例方法实例化
3.5 bean的依赖注入分析
依赖注入:Spring框架核心IOC的具体体现
编写程序时,通过控制反转,把对象的创建交给了Spring,但是代码中不可能出现没有依赖的情况,IOC解耦至少降低他们的依赖关系,不会消除,例如:业务层仍会调用持久层的方法
那这种业务层和持久层的依赖关系,在使用Spring之后,就让Spring去维护了,也就是等框架把持久层对象传入业务层,而不用我们自己去获取
3.6 bean的依赖注入方式
怎么把UserDAO注入到UserService:
- 构造方法(有参构造)
- set方法
3.7 bean的依赖注入的数据类型
上面的操作都是注入的引用Bean,除了对象的引用可以注入,普通数据类型、集合等都可以在容器中进行注入
注入的数据类型:
- 普通数据类型
- 引用数据类型
- 集合数据类型
3.8 引入其他配置文件——分模块开发
Spring的配置内容非常多,导致文件非常长,不方便后期维护,可以对齐进行拆解
< import resource=“applicationContext-xxx.xml”/>
3.9 Spring 的重点配置
4 Spring 相关API
4.1 ApplicationContext的继承体系
applicationContext:接口类型,代表应用上下文,可以通过其实例或得Spring容器中的bean 对象
4.2 ApplicationContext的实现类
-
ClassPathXMLApplicationContext
他是从类的根路径下加载配置文件,推荐使用这种
-
FileSystemXMLApplicationContext
从磁盘路径上加载配置文件,配置文件可以在磁盘的任意位置
-
AnnotationXMLApplicationContext
使用注解配置容器对象时,需要使用这个类来创建Spring容器