spring框架的深入理解

 2023-09-15 阅读 23 评论 0

摘要:spring事务代理机制: 1类代理 类1实现接口1 ,spring会自动为类1生成代理类1,spring已经为这个代理类1做好的事务处理了,那么接下来对于类1的处理就是通过代理类1进行处理的 spring框架是什么、2接口代理 代理类1实现接口1,首先通过代理类转换

spring 事务代理机制:

1类代理

      类1实现接口1 ,spring会自动为类1生成代理类1,spring已经为这个代理类1做好的事务处理了,那么接下来对于类1的处理就是通过代理类1进行处理的

spring框架是什么、2接口代理

     代理类1实现接口1,首先通过代理类转换成接口1类型,然后调用这个接口1中的方法来实现对类1的处理

1事务的策略:

          继承一个统一的接口PlatformTransactionManager,方法TransactionStatus getTransaction(TransactionDefinition transactionDefinition),void commit(TransactionStatus transactionStatus),void callback(TransactionStatus transactionStatus)

java spring框架 入门,对象:TransactionStatus:可能表示新建的一个事务或者原有的事务(如果当前调用堆栈中已有一个事务)如同j2ee事务上下文一样,TransactionStatus和当前执行线程相关联

接口:

(1)TransactionStatus

                 a.事务状态查询

什么是spring。                 b.控制事务执行

(2)TransactionDefinition

                属性:事务的隔离机制、事务传播行为、事务超时、只读状态

2事务的实现:

spring mvc流程?(1)编程式:

               a.TransactionTemplate

                            如同其他的spring模版(jdbcTemplate,HibernateTemplate)一样,使用回调返回将应用程序从处理、销毁资源中解脱出来,是线程安全的

               b.PlatformTransactionManager

spring框架详细介绍、                            

(2)声明式

               a.AOP

                           a.目标对象(类或接口)

                           b.通过TransactionProxyFactoryBean设置Spring代理

                           c.引用PlatformTransactionManager和事务属性(含有事务定义)

                           d.通过切入点来进行事务拦截

               b.BeanNameAutoProxyCreator

                           Spring中一旦ApplicationContext读完它的初始化信息,它将初始化所有实现BeanPostProcessor接口的bean,并且它们后处理所有ApplicationContext中所有其                              他的bean

1事务传播行为:

(1)PROPAGATION_SUPPORTED:如果有事务就事务处理,如果没有事务就事务处理

(2)PROPAGATION_NOT_SUPPOETED:如果有事务就将事务挂起进行处理,处理完之后,处理完之后再运行事务处理

(3)PROPAGATION_REQURIED_NRW:如果当前有一个事务在运行,那么就会创建一个新的事务,这个新的事务和原来的事务不搅合(什么叫不搅合呢,就是这两个事务的提交和回滚互相不影响)

(4)PROPAGATION_NRVER:如果当前有事务在运行,那么就会抛出异常

(5)PROPAGATION_REQUIRED:如果当前有正在运行的事务,那么就不会创建一个新的事务了,如果当前没有存在的事务,那么就会为自己创建一个新的事务,父子事务想依(即子事务提交,父事务回滚,那么子事务也回滚)

(6)PROPAGATION_MANDATOEY:当前必须在一个事务事务中运行

(7)PROPAGATION_NESTED:有一个savepointed,和PROPAGATOIN_REQUIRED_NEW相互比较,区别在于这个事务和父事务相依(即即使子事务提交了,父事务回滚了,那么子事务也回滚)

2事务的隔离级别:

所以针对3中的这些数据有了以下这些事务隔离级别:

(1)默认ISOLATION_DEFAULT和数据库中的默认的隔离级别相对应

(2)未提交事务隔离ISOLATION_READ_UNCOMMITED会出现脏读、不可重复读、幻读

(3)已提交事务隔离级别ISOLATION_READ_COMMITED,解决了脏读,会出现不可重复读和幻读

(4)不可重复读ISOLATION_REAPRATABLE_READ,解决了不可重复读,但会出现幻读

(5)不可接近读ISOLATION_SERILASIBLE,解决了幻读(事务处理时候会有顺序性,性能损耗更多)

3(1)脏读:事务1未提交事务,事务2操作了未提交的数据,这些数据叫脏数据

(2)不可重复读:事务1有两步骤行为操作,当事务1操作为行为1的时候,事务2操作了当前的数据,然后事务1接着操作当前的数据,这些数据在事务1操作的时候误以为是事务1操作第一个行为之后的数据,而实际上是事务2操作之后的数据,此时的数据叫做不可重复读数据

(3)幻读:事务1操作一个行为比如说修改这张表中的所有的数据,事务1操作了之后,事务2过来添加了一个数据,那么对于事务1的来说,这张表中的所有的数据都已经被修改过了,而实际上这张表中还有一条数据没有被修改

spring 依赖注入:

  当程序启动的时候,会自动完成spring容器的初始化,并把bean对象都放入到这个容器中,并实现对bean对象的生命周期的管理(创建和销毁),如果要使用这个容器中的某一个对象,只需要从这个容器中获取指定名称的bean对象就可以了,这种现象叫做控制反转(即这些bean对象的管理权不是由程序,而是由外部的容器管理),只需要通过配置文件的配置,就可以来完成。spring 容器通过dom4j来读取配置文件,beanDifination类对应配置文件中的bean标签,bean标签中的一些属性就是对应到beanDifination类中的属性,包括id className 包含propertyDefinition对象的list,解析这个propertyDefinition list集合,然后获取每一个propertyDefinition对象,这个类中的属性包括value 和 ref,如果是value就获取这个类对应的bean实例,如果是ref就拿着这个标识去该容器中查找时候存在这个bean对象,如果是存在的话,就把这个bean对象注入到当前的bean对象中

spring mvc处理的流程:

web请求-->被DispatcherServlet进行管理--->通过HandlerMapping进行对应到哪一个处理器----->找到对应的处理器调用这个处理器中的业务处理方法--->返回ModelAndView对象,ViewResolver(视图解析器)通过这个对象中的视图的名称获取到这个视图,然后把Model数据放入到这个视图中,然后渲染这个视图,最后呈现到浏览器显示给用户

核心:

WebApplicationContext继承ApplicationContext,ApplicaotionContext初始化需要ServletContext实例,也就是说必要再有web容器的前提下完成所有的启动功能,启动的两种方式

(1)在web.xml配置servelt自启动WebApplicationContext(ContextloaderServlet)(2)配置Web容器的WebronContextListener(ContextLoaderListener)监听器,把webApplication实例化放到了ServletContext中,ServletContext是一个Map集合,从它中获取的话 只需要传入一个key值 就行了 ,spring提供WebApplicationContextUtil传入servletContext进行获取到WebApplicaitonContext



版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/60107.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息