Files
Hui-s-notebook/Java-Interview/常见框架/Spring.md
Lostecho c8f11d0488 update
2024-03-03 16:38:06 +08:00

132 lines
3.5 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.
1. Spring 模块
2. SpringSpring 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