`
huayu611
  • 浏览: 1561 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Spring配置介绍(三)

 
阅读更多

事务处理是spring核心的一部分,这次参考的是spring-tx-3.0.xsd

advice

 

advice是事务处理的主要的节点,他是AOP的一个扩展,AOP面向切面 ,而advice处理事务也是通过aop切面实现的,我们知道aop处理时,需要定义切面类,但事务是AOP一种应用,所以他使用的是TransactionInterceptor这个类来实现事务处理



 

 

支持两个节点属性idtransaction-manager

id:advice的唯一性,在逻辑上可能没有什么太多的用处

transaction-manager:事务管理器,如果这个属性没有传,则默认为

transaction-manager="transactionManager",这个里面配置的是事务管理器的bean

这个类需要是PlatformTransactionManager的子类,可以自己定制,但这里需要自己配置springBean,

 

再看一下他的子节点。



 

spring处理advice时,子节点,最多只能有一个attribute的子节点。如果没有可以默认,如果多个,spring启动将直接报错

Attribute有一个子节点节,method,如上图所示,可以看出,method可以支持多个的,是一对多的关系。

Namename也是支持表达式,他是一系列method的名称。

Propagation:事务一致性,参见下面的列表 ,(这个是我从某博客上贴过来的http://www.blogjava.net/wmcoo/articles/333831.html,也可以参考spring源码TransactionDefinition.java),默认为PROPAGATION_REQUIRED

         PROPAGATION_REQUIRED:支持当前事务,如果当前没有事务,就新建一个事务。这是最常见的选择。
PROPAGATION_SUPPORTS
:支持当前事务,如果当前没有事务,就以非事务方式执行。
PROPAGATION_MANDATORY
:支持当前事务,如果当前没有事务,就抛出异常。
PROPAGATION_REQUIRES_NEW
:新建事务,如果当前存在事务,把当前事务挂起。
PROPAGATION_NOT_SUPPORTED
:以非事务方式执行操作,如果当前存在事务,就把当前事务挂起。
PROPAGATION_NEVER
:以非事务方式执行,如果当前存在事务,则抛出异常。
PROPAGATION_NESTED
:支持当前事务,如果当前事务存在,则执行一个嵌套事务(还不是太明白),如果当前没有事务,就新建一个事务。

Isolation:这个与Propagation一样,我从某博客上贴出来的,同样可以参考spring源码TransactionDefinition.java,默认为DEFAULT

1 ISOLATION_DEFAULT 默认的隔离级别
下面几个都是
 JDBC isolation levels 一一对应:
2 ISOLATION_READ_UNCOMMITTED Connection.TRANSACTION_READ_UNCOMMITTED
指示防止发生脏读的常量;不可重复读和虚读有可能发生。

3 ISOLATION_READ_COMMITTED Connection.TRANSACTION_READ_COMMITTED
指示可以发生脏读
 (dirty read)、不可重复读和虚读 (phantom read) 的常量。
4 ISOLATION_REPEATABLE_READ Connection.TRANSACTION_REPEATABLE_READ
指示防止发生脏读和不可重复读的常量;虚读有可能发生。

5 ISOLATION_SERIALIZABLE Connection.TRANSACTION_SERIALIZABLE
指示防止发生脏读、不可重复读和虚读的常量。

Timeout:事务超时,默认-1,无超时,单位为秒

read-only:默认为false,表示是否支持只读着事物,他是事务的一种属性,如果为true,如果出现操作类型的,将会报错

rollback-for:在sprring的处理中,如果遇到runtimeException便会回滚,当然spring支持自定义,当抛出特定的异常时,便才回滚事务,其它异常数据不回滚

no-rollback-for:同理,控制哪些特定的异常不回滚事务。其它异常回滚事务。

 

 

jta-transaction-manager:


看图可看出,其实这个节点什么都没有,所以在声明时只需要这样就可以了

<tx:jta-transaction-manager></tx:jta-transaction-manager>

便可实现 。其实内部看到配置了jta,就会自动生成一条名为transactionManagerspringbean,通过jta管理事务,默认为:

org.springframework.transaction.jta.JtaTransactionManager

现在我们想想之前transaction-manager,便可知道他们可以搭配使用

 

annotation-driven



 

 

这里是通过注解方式对事物进行管理的一种声明。

Mode:事务方式,有两种取值,aspectjproxy,默认是代理模式

transaction-manager:与advice中的transaction-manager方式一样的。

proxy-target-classtruefalse两种,默认为false,表示是否启用代理,当然这个只会在mode=”proxy”情况下才会读取,如果为false,那么默认代理 ,如果为true,可能就需要自动生成 代理 类,可能 需要CGLIB能力。

Order:与上一篇AOP说的order一样。

总结:

 

其它上面做的东西,都是事务的一种声明或定义,刚开始也说了,他只是一种AOP的实例,如果要在流程中使用,还是要通过配置切面真正的使用起来。可以在aop:configadvice-ref去引用。

 

  • 大小: 12.8 KB
  • 大小: 13.9 KB
  • 大小: 9.2 KB
  • 大小: 15.4 KB
分享到:
评论

相关推荐

    spring配置 spring配置 spring配置 spring配置 spring配置

    spring配置 spring配置 spring配置 spring配置 spring配置

    ssm配置spring配置

    ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssmspring配置ssm...

    Spring配置加注释

    Spring配置 Spring 配置 映射 加注释!!!!Spring配置 Spring 配置 映射 加注释!!!!

    spring配置文件实例

    spring配置文件实例

    spring配置文件详细介绍

    下面是对Spring配置文件的详细介绍。 首先,Spring配置文件通常是以`.xml`为扩展名的文件,例如`beans.xml`。这些文件存储在项目的`src/main/resources`目录下,以便在运行时被自动加载。Spring容器...

    spring配置文件

    spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件spring配置文件...

    Spring配置文件集合

    在本压缩包中,我们找到了一系列与Spring相关的配置文件,这些文件在构建JavaWeb应用时起着至关重要的作用。 1. `jdbc.properties`: 这个文件通常用于存储数据库连接的相关信息,如URL、用户名、密码等。它是Spring...

    Spring的基本配置

    一、Spring配置概述 Spring的配置方式主要有两种:XML配置和Java配置。早期,XML配置是主流,而现在,随着Spring Boot的兴起,Java配置逐渐成为首选,因为它更加简洁和直观。不过,理解XML配置对于学习Spring的基础...

    SpringCloud——分布式配置中心(Spring Cloud Config)

    **三、配置服务器的启动** 要启动 Config Server,需要在 `application.yml` 或 `bootstrap.yml` 文件中配置仓库信息,例如: ```yaml spring: cloud: config: server: git: uri: ...

    spring配置的简单案例.zip

    spring配置的简单案例.zip spring配置的简单案例.zip spring配置的简单案例.zip spring配置的简单案例.zip spring配置的简单案例.zip spring配置的简单案例.zip spring配置的简单案例.zip spring配置的简单案例.zip ...

    spring xml配置的12個技巧

    6. 利用Spring的抽象配置类来减少重复的配置,抽象配置类可以定义一些共用的配置,然后在具体的配置文件中通过继承来重用。 7. 使用Spring的属性文件和Spring表达式语言(SpEL)来动态配置,这可以在运行时根据不同...

    spring配置和启动方式

    spring配置和启动方式 博客地址:https://blog.csdn.net/u010476739/article/details/76696756

    Spring配置MySQL数据源

    连接MYSQL数据库,SPRING配置文件示例。

    spring配置步骤

    ### Spring配置步骤详解 #### 一、Spring框架简介 Spring框架是Java平台上的一个开源框架,它提供了一种简化企业级应用开发的方式。Spring的核心功能包括依赖注入(Dependency Injection, DI)、面向切面编程...

    Spring 配置

    1.创建web工程 2.导入jar ...3.导入配置文件 spring-framework-2.5.6\samples\jpetstore\war\WEB-INF\log4j.properties spring-framework-2.5.6\samples\jpetstore\war \WEB-INF\applicationContext.xml

    Spring Boot中配置文件介绍及其使用教程

    Spring Boot中配置文件介绍及其使用教程所用到的Controller代码 Spring Boot中配置文件介绍及其使用教程所用到的Controller代码 Spring Boot中配置文件介绍及其使用教程所用到的Controller代码 Spring Boot中配置...

    Spring动态加载配置文件

    接下来,一旦检测到Spring配置文件发生变化,我们需要重新加载配置文件。这可以通过Spring的`ApplicationContext`的`refresh()`方法来实现。`refresh()`会重新初始化Bean工厂,读取新的配置信息,并更新所有Bean的...

    Spring Cloud配置中心获取不到最新配置信息的问题

    Spring Cloud配置中心获取不到最新配置信息的问题 Spring Cloud配置中心获取不到最新配置信息的问题是一个常见的问题,在微服务应用中,配置中心是非常重要的组件,它负责管理和分发配置信息。但是,如果配置中心出...

    spring MVC配置详解

    三、Spring 配置 在 web.xml 文件中配置 ContextLoaderListener 和 contextConfigLocation,以便加载 Spring 的配置文件。 ```xml &lt;!-- Spring 配置 --&gt; org.springframework.web.context....

    spring配置数据库文件

    spring配置数据库文件,连接数据库的一写配置文件

Global site tag (gtag.js) - Google Analytics