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