132 lines
3.5 KiB
Markdown
132 lines
3.5 KiB
Markdown
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 |