Java笔记之Spring

1、Spring

      Spring是轻量级Java企业应用开发框架,通过IOC实现松散耦合,支持面向切面编程,提供方便的事务管理。但是依赖反射实现,影响性能

2、Spring IOC

      IOC就是控制反转,将创建对象的权利转移到Spring容器中,通过Java反射机制,由容器根据配置文件在运行时动态的创建对象和管理对象,维护各个对象之间的关系。

3、Spring AOP

      AOP(面向切面编程),将哪些与业务无关,却为业务模块所共同调用的逻辑封装起来,便于减少系统的重复代码,降低模块耦合度,并有利于未来的可扩展性和可维护性。

      Spring AOP基于动态代理实现,如果要代理对象实现某个接口,Spring AOP就会使用JDK动态代理去创建代理对象;而对于没有实现接口的对象,就无法使用JDK动态代理,转而使用CGLIB动态代理生成一个被代理对象的子类来作为代理。

4、Spring Bean

      Spring Bean生命周期:

  •                    通过BeanDefinition获取bean的定义信息
  •                    调用构造函数实例化bean
  •                    bean的依赖注入
  •                    处理Aware接口
  •                    bean的后置处理器beanpostprocessor
  •                    初始化方法

5、Spring事务实现方式

       编程式事务

       声明式事务

6、Spring事务失效场景

  • 异常捕获处理,自己处理了异常,没有抛出
  • 抛出检查异常
  • 非public方法导致的事务失效

7、Spring循环依赖

      Spring循环依赖指在实例化A对象时,生成一个objectfactory对象添加到三级缓存,初始化时发现A依赖B对象,但是B对象未创建,因此就去创建B对象,在初始化B时发现,B对象依赖C对象,但C对象未创建,又去创建C对象,在初始化C对象时发现,C依赖A对象,因此此时可以通过objectfactory中的getObject方法拿到A对象。C拿到A对象后可以顺利完成初始化,然后将自己添加到一级缓存;然后回到B对象,B也可以拿到C对象完成初始化,A又可以顺利拿到B对象完成初始化,到此整个初始化过程完成。

一级缓存:单例池,缓存已经经历过完整的生命周期,已经初始化完成的bean对象

二级缓存:缓存早期的bean对象,生命周期还没有走完

三级缓存:缓存objectfactory对象

8、Spring事务传播行为

      PROPAGATION_REQUIRED:支持当前事务,如果不存在就新创建一个

      PROPAGATION_SUPPORTS:支持当前事务,如果不存在就不使用事务

      PROPAGATION_MANDATORY:支持当前事务,如果不存在抛出异常

      PROPAGATION_REQUIRES_NEW:如果有事务存在,挂起当前事务,创建一个新事务

      PROPAGATION_SUPPORTED:以非事务方式运行,如果有事务存在,挂起当前事务

     PROPAGATION_NEVER:以非事务方式运行,如果有事务存在,抛出异常

       PROPAGATION_NESTED:如果当前事务存在,则嵌套事务执行

 

 

  • 8
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值