Spring框架

Spring框架

  • 概念

    • 轻量化的开源框架,提高开发效率.
  • 重要功能

    • 依赖注入,控制翻转:Bean交由Spring管理,实现了松耦合
    • AOP:面向切面编程,减少耦合,在某种场景添加功能,例如日志或者监控之内的内容,可以在侵入量很少的情况下加入新功能.
  • Spring事务

    1. 编程式事务(一般不用)
      • 编程式事务使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。
    2. 声明式事务,通过配置文件或者注解配置(推荐使用)
      • 建立在AOP之上的。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。
    3. 隔离等级
      1. 默认 使用后端数据源默认的隔离等级,Mysql 为可重复读取 Oracle 为读取已提交.
      2. 读取未提交
      3. 读取已提交
      4. 可重复读取
      5. 串行化
  • Spring事务传播行为

    • 支持当前事务的情况
      • REQUIRED 要求有事务,没有则创建
      • SUPPORTS 支持当前事务,有则加入,无则无事务运行
      • MANDATORY 强制当前有事务,没有则报错
    • 不支持当前事务的情况
      • REQUIRED_NEW 创建一个新的事务并加入,当前事务挂起
      • NOT_SUPPORTED 不支持事务,如果有事务,则挂起当前事务
      • NEVER 不接受事务,有则报错
    • 其他情况:
      • NESTED 如果当前存在事务,则创建一个事务作为当前事务的嵌套事务来运行;如果当前没有事务,则该取值等价于REQUIRED
  • 面试题

    1. 谈谈自己对于 Spring IoC 和 AOP 的理解
      • IoC(Inverse of Control:控制反转)是一种设计思想,就是 将原本在程序中手动创建对象的控制权,交由Spring框架来管理。 IoC 在其他语言中也有应用,并非 Spring 特有。 IoC 容器是 Spring 用来实现 IoC 的载体, IoC 容器实际上就是个Map(key,value),Map 中存放的是各种对象。
      • 将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注入。这样可以很大程度上简化应用的开发,把应用从复杂的依赖关系中解放出来。 IoC 容器就像是一个工厂一样,当我们需要创建一个对象的时候,只需要配置好配置文件/注解即可,完全不用考虑对象是如何被创建出来的。
      • AOP(Aspect-Oriented Programming:面向切面编程)能够将那些与业务无关,却为业务模块所共同调用的逻辑或责任(例如事务处理、日志管理、权限控制等)封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可拓展性和可维护性。
      • Spring AOP就是基于动态代理的,如果要代理的对象,实现了某个接口,那么Spring AOP会使用JDK Proxy,去创建代理对象,而对于没有实现接口的对象,就无法使用 JDK Proxy 去进行代理了,这时候Spring AOP会使用Cglib ,这时候Spring AOP会使用 Cglib 生成一个被代理对象的子类来作为代理。
    2. Controller是多例还是单例
      • 单例,不定义成员变量的时候是线程安全的
    3. Spring框架用了那些设计模式
      1. 工厂模式:生产bean
      2. 代理模式:AOP
      3. 单例模式:Controller单例
      4. 模版方法模式:jdbcTemplate,redisTemplate
    4. @Autowired @Resource @Qualifier的异同
      1. @Autowired是byType的 注入 如果有多个同类型的Bean就需要用到@Qualifier
      2. @Autowired+@Qualifier=@Resource
      3. @Resource 默认按照ByName自动注入。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值