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

3.5 KiB
Raw Blame History

  1. Spring 模块

  2. SpringSpring MVC, Spring Boot

  3. IoC 将对象创建的控制权交给 Spring 框架来进行管理

    1. 什么是 Bean 被 Spring 的 IOC 容器所管理的 Bean并通过配置元数据来定义

    2. 将一个类声明为 Bean 的注解 @Component@Service@Repository @Controller

    3. @Componet 和@Bean - Component 作用于类Bean 作用于方法 - Component 用@ComponentScan 来定义需要扫描的路径, - Bean 可以医用第三方库中的类

    4. 注入 Bean 的注解 - @Autowired - @Resource - @Inject

    5. @Autowire 和@Resource Autowire 为 Spring 内置的注解,注入类型为 byType优先根据接口类型匹配 Resource 为 JDK 提供的注解,默认 byName

    6. Bean 的作用域

      1. singleton
      2. protoype
      3. request
      4. session
      5. application/global-session
      6. websocket
    7. Bean 是线程安全的吗 取决于 Bean 的作用域和状态singleton 下只有一个 Bean 实例,如果 bean 为有状态的,就会存在线程安全的问题

      • 在 Bean 中尽量避免定义可变的成员变量
      • 在类中定义 ThreadLocal 成员变量,将可变的变量存储在 ThreadLocal 中
  4. Bean 的生命周期

  5. AoP

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

AOP 概念

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


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

    1. Spring MVC

      MVC 设计模式 modelviewcontroller

    2. 核心组件

    • Dispatchservlet:核心中央处理器
    • HandlerMapping:处理器映射器
    • HandlerAdapter:处理器适配器
    • Handler:请求处理器
    • ViewResolver:视图解析器
    1. 工作原理

!SpringMVC工作流程图.png

 1. 统一异常处理

	使用注解@ControllerAdvice+@ExceptionHandler
  1. Spring 中的设计模式
  • 工厂设计模式
  • 代理设计模式
  • 单例设计模式
  • 模板方法模式
  • 包装器模式
  • 观察者模式
  • 适配器模式
  1. 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

  2. Spring Data JPA

  3. Spring Security