spring

1、Spring 是JavaEE 一个开源的框架,他可以应用在任何的Java 程序应用中,使得程序有很好的扩展性,让程序更简捷,降低复杂性。

2、Spring 有两大核心功能,IOC/DI(依赖注入,控制反转) Aop(面向切面编程)

    IOC:    

    (1)IOC 动态注入:让一个对象不需要去new 可以自动生产,

    (2)java 程序中的每个业务逻辑至少需要两个或者多个对象去协助完成,每个对象调用的时候都需要new()来完成调用,

     你会发现程序的耦合度就高了

    (3)而IOC 的思想是Spring 容器来实现这些相互依赖的关系,你只需关系业务的实现就可以了,从这方面来讲对象需要

         new()得到协助对象就被反转了,获得依赖的方式就反转了。     

    (4) IOC的原理是什么?

           (4.1) IOC 的操作有两大部分

                (1) Ioc 配置文件的方式

                (2)注解的方式 

           (4.2) IOC 底层实现技术

                  (1)xml 配置文件

                  (2) dom4j 解析 xml

                  (3)工厂设计模式

                  (4)反射机制      

      (5)注解是怎么实现的

    Aop:

    (1)多个类的共同行为进行封装,Aop的核心就是切面,它将多个类的通用行为进行了封装,

    列如日志模块,根据不同的需求进行封装,根据不同的需求可以在一个程序中可以用若干个切面,、

    在Spring Aop 中切面通过注解的类来实现.

    (2)怎么创建一个切面

    (3)Aop的原理是什么?

            aop的实现原理其实就是java的动态代理,但是jdk的动态代理必须实现接口,

            所以sping的aop是用cglib这个库实现的,cglib使用了asm这个直接操作字节码的框架,

            所以做到不实现接口的情况下完成动态代理;

3、spring 的beanFactory  和 factoryBean有什么区别?

       (1) beanFactory是个factory,就是IOC容器或者叫对象工厂,在spring 中所有的bean都是交给beanFactory 

           (IOC容器)进行管理 ;(管理 bean 的工厂)

        (2)factoryBean是个bean,但factoryBean不是一个普通的bean,而是一个能生产对象的工厂bean

              他的实现与设计模式工厂模式类似;(factoryBean 用创建 生产 bean 的工厂)

4、spring 框架中的bean 的生命周期?

(1)bean定义
    在配置文件里面用<bean></bean>来进行定义。
(2)bean初始化
    有两种方式初始化:
    A.在配置文件中通过指定init-method属性来完成

    B.实现org.springframwork.beans.factory.InitializingBean接口

(3)bean调用
    有三种方式可以得到bean实例,并进行调用
(4)bean销毁
    销毁有两种方式
    A.使用配置文件指定的destroy-method属性
    B.实现org.springframwork.bean.factory.DisposeableBean接口

5、spring 的事务?

 事务的列子:

比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。

这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元;

如果银行卡扣钱失败但是ATM却出了1000块,那么银行将损失1000元,所以,如果一个步骤成功另一个步骤失败对

双方都不是好事,如果不管哪一个步骤失败了以后,整个取钱过程都能回滚,也就是完全取消所有操作的话,

这对双方都是极好的。

5.1 spring支持的事务管理类型

 Spring支持两种类型的事务管理:
 (1)编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护

   (2) 声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。

         注解方式 @Transaction 注解在 需要操作 数据的地方 XxxServiceImpl;

5.2 事务最重要的两个特性,是事务的传播级别和数据隔离级别。。        

1.    必须 2.支持 3.强制 4.总是开启新的 5.不支持事务 6.不传播 7.事务嵌套

    七种传播特性:

1.PROPAGATION_REQUIRED:(REQUIRED必须的)

            如果存在一个事务,则支持当前事务,如果没有则开启。

    2. PROPAGATION_SUPPORTS (SUPPORTS 支持)    

            如果存在一个事务,支持当前事务。如果没有事务,则非事务的执行

    3. PROPAGATION_MANDATORY (mandatory强制)

            如果已经存在一个事务,支持当前事务。如果没有一个活动的事务,则抛出异常。    

    4. PROPAGATION_REQUIRES_NEW(需要新的 REQUIRES_NEW)

            总是开启一个新的事务。如果一个事务已经存在,则将这个存在的事务挂起。

    5. PROPAGATION_NOT_SUPPORTED( NOT_SUPPORTED不支持)

            总是非事务地执行,并挂起任何存在的事务

    6. ROPAGATION_NEVER(不传播)

            总是非事务地执行,如果存在一个活动事务,则抛出异常

    7. PROPAGATION_NESTED(NESTED 事务嵌套)

            如果一个活动的事务存在,则运行一个嵌套的事务中,如果没有活动事务,则按

            TransactionDefinition.PROPAGATION_REQUIRED 属性执行

事务隔离级别:

    1.@Transactional(isolation= Isolation.READ_UNCOMMITTED) (脏读)

    读取未提交数据(会出现脏读, 不可重复读) 基本不使用

       一个事务读取到另一事务未提交的更新数据

    2.@Transactional(isolation =Isolation.READ_COMMITTED)不可重复读)

        读取已提交数据(会出现不可重复读和幻读)

        在同一事务中, 多次读取同一数据返回的结果有所不同,

    3.@Transactional(isolation= Isolation.REPEATABLE_READ) 幻读)

        可重复读(会出现幻读)

        一个事务读到另一个事务已提交的insert数据

    4.@Transactional(isolation= Isolation.SERIALIZABLE) 串行化


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值