3.5 KiB
3.5 KiB
-
Spring 模块
-
Spring,Spring MVC, Spring Boot
-
IoC 将对象创建的控制权交给 Spring 框架来进行管理
-
什么是 Bean 被 Spring 的 IOC 容器所管理的 Bean,并通过配置元数据来定义
-
将一个类声明为 Bean 的注解
@Component,@Service,@Repository,@Controller -
@Componet 和@Bean - Component 作用于类,Bean 作用于方法 - Component 用@ComponentScan 来定义需要扫描的路径, - Bean 可以医用第三方库中的类
-
注入 Bean 的注解 -
@Autowired-@Resource-@Inject -
@Autowire 和@Resource Autowire 为 Spring 内置的注解,注入类型为 byType,优先根据接口类型匹配 Resource 为 JDK 提供的注解,默认 byName
-
Bean 的作用域
- singleton
- protoype
- request
- session
- application/global-session
- websocket
-
Bean 是线程安全的吗 取决于 Bean 的作用域和状态,singleton 下只有一个 Bean 实例,如果 bean 为有状态的,就会存在线程安全的问题
- 在 Bean 中尽量避免定义可变的成员变量
- 在类中定义 ThreadLocal 成员变量,将可变的变量存储在 ThreadLocal 中
-
-
Bean 的生命周期
-
AoP
含义 术语 目标 被代理的对象 代理 向目标对象应用通知后创建的代理对象 连接点 目标对象所属类中,定义的所有方法都是连接点 切入点 被切面拦截/增强的连接点 通知 增强的逻辑/代码,拦截到目标对象的连接点之后需要做的事情 切面 切入点+通知 织入 将通知应用到目标对象生成代理对象的过程
AOP 概念
1. AOP 概念及术语
基于动态代理实现,需要代理的对象实现了某个接口,通过 JDK Proxy 创建一个代理的接口实现类,没有实现的就使用 CGLIB 生成一个被代理对象的子类来实现
1. 和 AspectJ 的区别
AOP 是运行时增强,AspectJ 时编译时增强,基于字节码
1. 通知类型
- 前置通知
- 后置通知
- 返回通知
- 异常通知
- 环绕通知
1. 多个切面的执行顺序
- 使用`@Order`注解
- 实现Order接口重写getOrder方法
-
MVC
-
Spring MVC
MVC 设计模式
model,view,controller -
核心组件
Dispatchservlet:核心中央处理器HandlerMapping:处理器映射器HandlerAdapter:处理器适配器Handler:请求处理器ViewResolver:视图解析器
- 工作原理
-
1. 统一异常处理
使用注解@ControllerAdvice+@ExceptionHandler
- Spring 中的设计模式
- 工厂设计模式
- 代理设计模式
- 单例设计模式
- 模板方法模式
- 包装器模式
- 观察者模式
- 适配器模式
-
Spring 事务
- 管理事务的方式
- 编程式事务:通过代码来实现事务管理
- 声明式事务:通过 xml 配置或注解的方式,实际通过 AOP 实现
- 事务传播行为
PROPAGATION_REQUIREDPROPAGATION_REQUIRES_NEWPROPAGATION_NESTEDPROPAGATION_MANDATORYPROPAGATION_SUPPORTSPROPAGATION_NOT_SUPPORTPROPAGATION_NEVER
- 隔离级别
ISOLATION_DEFAULT:使用后端数据库的默认隔离级别ISOLATION_READ_UNCOMMITED:ISOLATION_REPEATABLE_READ:ISOLATION_SERIALIZABLE:
-
@Transactional (rollbackFor = Exception. class)注解
默认回滚RuntimeException
-
Spring Data JPA
-
Spring Security
