简化开发
IoC
AOP
事务处理
框架整合
MyBatis
MyBatis-plus
Struts
Struts2
Hibernate
...
Spring官网:Spring | Home
Spring Framework
Spring Boot
Spring Cloud
Spring Framework系统架构
Spring Framework是Spring生态圈中最基础的项目,是其他项目的根基
Data Access : 数据访问
Data Integration : 数据集成
Web : Web开发
AOP : 面向切面编程
Aspects : AOP思想实现
Core Container : 核心容器
Test :单元测试与集成测试
Spring Framework学习线路
第一部分:核心容器
核心概念(IoC/DI)
容器基本操作
第二部分:整合
整合数据层技术MyBatis
第三部分:AOP
核心概念
AOP基础操作
AOP实用开发
第四部分:事务
事务实用开发
第五部分:家族
SpringMVC
SpringBoot
SpringCloud
**核心概念
由于代码耦合度偏高
为了解决该问题,使用对象时,在程序中不主动使用new产生对象,转换为由外部提供对象
IoC(Inversion of Control)控制反转
对象的创建控制权由程序转移到外部,这种思想称为控制反转
使用对象时,由主动new产生对象转换为由外部提供对象,此过程中对象创建控制权由程序转移到外部,此思想称为控制反转
Spring技术对IoC思想进行了实现
Spring提供了一个容器,称为IoC容器,用来充当IoC思想中的“外部”
IoC容器负责对象的创建、初始化等一系列工作,被创建或被管理的对像在IoC容器中统称为Bean
DI(Dependency Injection)依赖注入
在容器中建立bean与bean之间的依赖关系的整个过程,称为依赖注入
目标:充分解耦
使用IoC容器管理bean(IoC)
在IoC容器内将有依赖关系的bean进行关系绑定(DI)
最终效果
使用对象时不仅可以直接从IoC容器中获取,并且获取到的bean已经绑定了所有的依赖关系
IoC入门案例
①导入Spring坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
②定义Spring管理的类(接口)
public interface BookService{
public void save();
}
public class BookServiceImpl implements BookService{
public BookDao bookDao = new BookDaoImpl();
public void save(){
bookDao.save();
}
}
③创建Spring配置文件,配置对应类作为Spring管理的bean
④初始化IoC容器,通过容器获取bean
public class App2 {
public static void main(String[] args) {
//3.获取IoC容器
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
//4.获取bean(根据bean配置id获取)
// BookDao bookDao = (BookDao) ctx.getBean("bookDao");
// bookDao.save();
BookService bookService = (BookService) ctx.getBean("bookService");
bookService.save();
}
}
DI入门案例
在上面的基础上进一步解耦
①删除使用 new的形式创建对象的代码
②提供依赖对象对应的setter方法
③配置service与dao之间的关系
bean别名配置
, ; 空格
bean作用范围
默认 单例
适合交给容器进行管理的bean
表现层对象
业务层对象
数据层对象
工具对象
不适合交给容器进行管理的bean
封装实体的域对象
bean实例化
bean本质上就是对象,创建bean使用构造方法完成
实例化bean的方法
- 方法一 提供可访问的构造方法
配置
- 方法二 使用静态工厂实例化
一般为了兼容之前的项目
- 方法三 使用实例工厂实例化bean(了解)
***方式三的改良***——FactoryBean
Spring-09-bean实例化-实例工厂与FactoryBean_哔哩哔哩_bilibili
bean的生命周期
Spring-10-bean的生命周期_哔哩哔哩_bilibili
bean销毁时机
Spring报错:从下往上