quartz/content/Obsidian/后端/spring.md
wangzipai 7dec5524c4
[PUBLISHER] Merge #8
* PUSH NOTE : spring.md

* PUSH NOTE : 依赖注入.md
2024-10-29 17:46:56 +08:00

65 lines
3.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
date created: 2024-10-28 18:11
date updated: 2024-10-29 17:46
tags:
- spring
- 后端
share: "true"
---
# 概述
## 介绍
Spring框架是企业使用最多的框架没有之一。Spring是一站式框架称之为一站式框架的原因是Spring可以整合其他框架。
![image.png](https://raw.githubusercontent.com/wangzipai/my_ob_pic/main/20241029104739.png)
要学习Spring的内容如下
- IoC控制反转
- DI[[../编程模型及方法/依赖注入|依赖注入]]
- Spring AOP面向切面编程技术为Spring事务管理打下基础。
- Spring Transaction managementSpring事务管理。
- Spring Web MVC不包含在本课程内后面单独学习简称Spring MVC框架用来简化JavaWEB开发当使用Spring MVC框架后就不用再编写Servlet了。也就不再需要itcast-tools工具中BaseServlet类了。
- Spring与其他框架整合因为我们只学习过MyBatis框架所以当前我们只学习Spring整合MyBatis框架。
# 原理
## IoC
Spring IoC是Inversion of Control的缩写多数书籍翻译成“控制反转”它是Spring框架的核心。
Spring IOC用于==管理Java对象之间的依赖关系====将对象的创建、组装、管理交给框架来完成==,而不是由开发者手动完成。
IOC不是一种技术只是一种思想一个重要的面向对象编程的法则它能指导我们如何设计出松耦合、更优良的程序。
传统应用程序都是由我们在类内部主动创建依赖对象,从而导致**类与类之间高耦合**难于测试有了IoC容器后把创建和查找依赖对象的控制权交给了容器如下图所示
Spring IoC的核心如下
- 工厂负责对象生命周期的管理spring管理创建与销毁
- 对象的依赖由工厂完成注入。spring维护对象间关系
Spring提出了对象工厂的概念由Spring工厂来管理对象的生命周期。所谓对象生命周期指的是==从对象的创建一直到对象的销毁都由Spring来管理==。我们无需再自己new对象而是从Spring工厂中获取需要的对象。甚至**对象的依赖也由工厂来注入,无需手动注入依赖**。
Spring工厂是ApplicationContext接口通常我们使用的是AnnotationConfigApplicationContext类。其中Spring工厂内部是通过Map类型来维护的。
| Key | value |
| --------------------------------------- | ------------- |
| “userDao1” | UserDao实例 |
| “userService1” | UserService实例 |
| ... | ... |
| 当我们需要获取工厂中的实例时只需要调用工厂的getBean(“id”)即可。 | |
| ```java | |
| @Test public void test3() { | |
```java
@Test public void test3() {
AnnotationConfigApplicationContext context = ...
UserDao userDao = (UserDao) context.getBean("userDao1");
}
```
![image.png](https://raw.githubusercontent.com/wangzipai/my_ob_pic/main/20241028181943.png)