Spring常见知识点

120 阅读2分钟

这是我参与更文挑战的第8天,活动详情查看:更文挑战

一、IOC与AOP

IOC

  • IoC(Inverse of Control:控制反转)是一种设计思想 ,(注:并非 Spring 特有,其他语言也有);
  • 将原本在程序中手动创建对象控制权,当需要创建对象时,只需要配置好配置文件/注解即,交给spring框架管理
  • IoC 容器是 Spring 用来实现 IoC 的载体, IoC 容器实际上就是个Map(key,value)Map 中存放的是各种对象
  • 好处
    • 将对象之间的相互依赖关系交给iOc容器管理,并且由ioc容器完成对象注入
    • 简化手工程序代码来维护对象之间的依赖关系
  • Spring IoC的初始化过程

snipaste_20210620_205249.png

AOP

  • AOP(Aspect-Oriented Programming:面向切面编程)
  • 适用于处理 与业务无关为业务模块共同调用的逻辑代码
  • 好处:减少系统重复代码,减低代码耦合度,易于维护
  • 常用于
    • 事务处理
    • 日志管理
    • 权限控制

二、spring bean

常见作用域

  • singleton : 唯一 bean 实例,Spring 中的 bean 默认都是单例的。
  • prototype : 每次请求都会创建一个新的 bean 实例。
  • request : 每次HTTP请求都会产一个新的bean,该bean仅在当前HTTP request内有效。
  • session : 每次HTTP请求都会产一个新的 bean,该bean仅在当前 HTTP session 内有效。
  • global-session: 全局session作用域,仅仅在基于portlet的web应用中才有意义,Spring5已经没有了。

单例bean线程安全问题

三、Spring 事务

Spring中事务隔离级别

  • TransactionDefinition.ISOLATION_DEFAULT
    • 使用后端数据库默认的隔离级别
    • Mysql 默认采用的 REPEATABLE_READ 隔离级别
    • Oracle 默认采用的 READ_COMMITTED 隔离级别.
  • TransactionDefinition.ISOLATION_READ_UNCOMMITTED
    • 最低的隔离级别,
    • 允许读取尚未提交的数据变更,可能会导致脏读、幻读或不可重复读
  • TransactionDefinition.ISOLATION_READ_COMMITTED
    • 允许读取并发事务已经提交的数据,
    • 可以阻止脏读,但是幻读或不可重复读仍有可能发生
  • TransactionDefinition.ISOLATION_REPEATABLE_READ
    • 对同一字段的多次读取结果都是一致的,除非数据是被本身事务自己所修改;
    • 可以阻止脏读和不可重复读,但幻读仍有可能发生
  • TransactionDefinition.ISOLATION_SERIALIZABLE
    • 最高的隔离级别,完全服从ACID的隔离级别。所有的事务依次逐个执行,事务之间不会相互干扰。
    • 可以防止脏读、不可重复读以及幻读,但是这将严重影响程序的性能 ,一般不会使用。

参考链接