1. Spring 模块
2. Spring，Spring MVC, Spring Boot
3. IoC
	将对象创建的控制权交给 Spring 框架来进行管理
      1. 什么是 Bean
		被 Spring 的 IOC 容器所管理的 Bean，并通过配置元数据来定义
      1. 将一个类声明为 Bean 的注解
		`@Component`，`@Service`，`@Repository `，`@Controller`
      1. @Componet 和@Bean
		- Component 作用于类，Bean 作用于方法
		- Component 用@ComponentScan 来定义需要扫描的路径，
		- Bean 可以医用第三方库中的类
      1. 注入 Bean 的注解
		-  `@Autowired`
		- `@Resource`
		- `@Inject`
      
	1. @Autowire 和@Resource
		Autowire 为 Spring 内置的注解，注入类型为 byType，优先根据接口类型匹配
		Resource 为 JDK 提供的注解，默认 byName

	1. Bean 的作用域
		1. singleton
		2. protoype
		3. request
		4. session
		5. application/global-session
		6. websocket
	
	1. Bean 是线程安全的吗
		取决于 Bean 的作用域和状态，singleton 下只有一个 Bean 实例，如果 bean 为有状态的，就会存在线程安全的问题
		- 在 Bean 中尽量避免定义可变的成员变量
		- 在类中定义 ThreadLocal 成员变量，将可变的变量存储在 ThreadLocal 中

2. Bean 的生命周期



3. AoP

> |含义|术语|
> |---|---|
> |目标|被代理的对象|
> |代理|向目标对象应用通知后创建的代理对象|
> |连接点|目标对象所属类中，定义的所有方法都是连接点|
> |切入点|被切面拦截/增强的连接点|
> |通知|增强的逻辑/代码，拦截到目标对象的连接点之后需要做的事情|
> |切面|切入点+通知|
> |织入|将通知应用到目标对象生成代理对象的过程|

---
AOP 概念
	
	1. AOP 概念及术语
		基于动态代理实现，需要代理的对象实现了某个接口，通过 JDK Proxy 创建一个代理的接口实现类，没有实现的就使用 CGLIB 生成一个被代理对象的子类来实现  
	1. 和 AspectJ 的区别
	    AOP 是运行时增强，AspectJ 时编译时增强，基于字节码
	1. 通知类型
		- 前置通知
		- 后置通知
		- 返回通知
		- 异常通知
		- 环绕通知
	

	1. 多个切面的执行顺序
		- 使用`@Order`注解
		- 实现Order接口重写getOrder方法

2. MVC
	1. Spring MVC

		MVC 设计模式
	`model`，`view`，`controller`

	1. 核心组件

	- `Dispatchservlet`：核心中央处理器
	- `HandlerMapping`：处理器映射器
	- `HandlerAdapter`：处理器适配器
	- `Handler`：请求处理器
	- `ViewResolver`：视图解析器

	1. 工作原理

 ![[SpringMVC工作流程图.png]]

	 1. 统一异常处理

		使用注解@ControllerAdvice+@ExceptionHandler

3. Spring 中的设计模式

- 工厂设计模式
- 代理设计模式
- 单例设计模式
- 模板方法模式
- 包装器模式
- 观察者模式
- 适配器模式

4. Spring 事务
	1. 管理事务的方式

	- 编程式事务：通过代码来实现事务管理
	- 声明式事务：通过 xml 配置或注解的方式，实际通过 AOP 实现 

	1. 事务传播行为

	- `PROPAGATION_REQUIRED`
	- `PROPAGATION_REQUIRES_NEW`
	- `PROPAGATION_NESTED`
	- `PROPAGATION_MANDATORY`
	- `PROPAGATION_SUPPORTS`
	- `PROPAGATION_NOT_SUPPORT`
	- `PROPAGATION_NEVER`

	1. 隔离级别

	- `ISOLATION_DEFAULT` ：使用后端数据库的默认隔离级别
	- `ISOLATION_READ_UNCOMMITED`:
	- `ISOLATION_REPEATABLE_READ`:
	- `ISOLATION_SERIALIZABLE`:

	1. @Transactional (rollbackFor = Exception. class)注解

		默认回滚RuntimeException

5. Spring Data JPA


6. Spring Security