`
一头狼
  • 浏览: 18627 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Flex系列--5--声明式事务

阅读更多

 

注意事项:
以下内容基于“Flex4系列整合iBATIS 2.3 ”中最后形成的 sampleApp 项目。

准备所需 jar 包
将以下 jar 包拷贝到 sampleApp 项目的 lib 下

  1. Spring Framework dependencies
    org.aspectj 内的 com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar

Spring Framework 的事务管理类型
综合性的事务支持是 Spring Framework 倍受欢迎的原因之一。Spring Framework 有两种事务管理方式:声明式事务管理和编程式事务管理。前者因为“对代码影响最小“和“非侵入性”而较为流行。

配置声明式事务
Spring Framework 的声明式事务通过 AOP 思想实现。

  1. 制定事务管理规则
    常见的是对 Service 层进行事务管理,我们也不例外。我们约定对 Service 接口内定义的方法实行以下事务上下文语义: 

     

    • 以 get 开头的方法:只读(read-only)
    • 以 insert 开头的方法:读写(read-write)
    • 以 update 开头的方法:读写(read-write)
    • 以 delete 开头的方法:读写(read-write)
  2. 配置
    向 web-application-config.xml 文件追加以下内容: 

     

    • 配置 PlatformTransactionManager bean,用于驱动事务
      <bean id="txManager"
            class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"/>
      </bean>
    • 配置 advice
      增加命名空间 

       

      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:flex="http://www.springframework.org/schema/flex"
             xmlns:context="http://www.springframework.org/schema/context"
             xmlns:tx="http://www.springframework.org/schema/tx"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
             http://www.springframework.org/schema/flex
             http://www.springframework.org/schema/flex/spring-flex-1.0.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context-3.0.xsd
             http://www.springframework.org/schema/tx
             http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

      追加 advice

      <tx:advice id="txAdvice" transaction-manager="txManager">
        <tx:attributes>
          <tx:method name="get*" read-only="true"/>
          <tx:method name="insert*"/>
          <tx:method name="update*"/>
          <tx:method name="delete*"/>
        </tx:attributes>
      </tx:advice>
    • 配置切入点
      增加命名空间 

       

      <beans xmlns="http://www.springframework.org/schema/beans"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns:flex="http://www.springframework.org/schema/flex"
             xmlns:context="http://www.springframework.org/schema/context"
             xmlns:aop="http://www.springframework.org/schema/aop"
             xmlns:tx="http://www.springframework.org/schema/tx"
             xsi:schemaLocation="http://www.springframework.org/schema/beans
             http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
             http://www.springframework.org/schema/flex
             http://www.springframework.org/schema/flex/spring-flex-1.0.xsd
             http://www.springframework.org/schema/context
             http://www.springframework.org/schema/context/spring-context-3.0.xsd
             http://www.springframework.org/schema/aop
             http://www.springframework.org/schema/aop/spring-aop-3.0.xsd
             http://www.springframework.org/schema/tx
             http://www.springframework.org/schema/tx/spring-tx-3.0.xsd">

      追加切入点配置

      <aop:config>
        <aop:pointcut id="serviceOperation" expression="execution(* *..*Service.*(..))"/>
        <aop:advisor advice-ref="txAdvice" pointcut-ref="serviceOperation"/>
      </aop:config>

      [注:]加粗部分为 AspectJ 切入点表达式,我会在本系列教程之后详细介绍。

  3. 上面的配置实际上做了什么?
    它们被用于围绕 Service 对象创建相应的事务代理,此代理会用 advice 配置。这样当 Service 中的方法在代理上执行时相应的事务也就启动了。
  4. 运行 sampleApp
分享到:
评论

相关推荐

    Flex4.1集成spring代码

    而Spring框架则是一种广泛使用的Java企业级应用框架,提供了全面的控制反转(IoC)和面向切面(AOP)编程支持,以及一系列企业服务的支持,如事务管理、数据访问等。将Flex与Spring进行集成,可以充分利用Spring的强大...

    FLEX4实例.docx

    此外,Flex 还引入了 MXML,这是一种声明式语言,用于构建用户界面,让开发者可以更快捷地构建组件和布局。 在 Flex 4 中,BlazeDS 是一个重要的中间件,它允许 Flex 客户端与服务器端的 Java 应用程序进行通信。...

    Flex+BlazeDS整合J2ee示例

    其基于MXML的声明式编程和ActionScript的脚本语言,使得开发者能够轻松地设计和构建UI。ActionScript是基于ECMAScript的一个面向对象的语言,支持类和接口,用于实现业务逻辑。 2. **BlazeDS**: BlazeDS是Flex与...

    flex+java增删改查(spring+jpa)简单例子

    MXML是一种声明式语言,用于定义UI布局,而ActionScript是基于ECMAScript的编程语言,用于编写应用程序逻辑。 2. **Spring框架**: Spring 是Java企业级应用开发中最常用的框架之一,提供了依赖注入、面向切面编程、...

    flex j2ee整合

    MXML是一种声明式语言,用于定义用户界面布局,而ActionScript是基于ECMAScript的脚本语言,用于实现应用逻辑和与服务器的交互。 **2. Java EE概述** Java EE(Java Platform, Enterprise Edition)包括一系列标准...

    flex,blazeds,spring,hibernate 整合小例子

    它基于ActionScript编程语言,支持MXML进行声明式编程,提供了一系列组件库,能够创建交互性强、动态效果丰富的Web应用。 2. BlazeDS:BlazeDS是Adobe提供的一个服务器端数据服务组件,主要负责Flex客户端与Java...

    Flex+spring+hibernate整合视频学习交流part_2

    - **事务管理**:Spring提供的声明式事务管理允许在服务层进行事务控制,确保数据的一致性。 - **Flex客户端数据绑定**:Flex端通过RemoteObject或HTTPService与Spring服务进行通信,获取和更新后端数据,并实时显示...

    Flex+spring+hibernate整合视频part_1

    Flex提供了一系列的组件和API,让开发者可以轻松地创建出响应式、用户友好的Web应用。 Spring是Java领域的轻量级框架,主要处理后端业务逻辑和控制层。它通过依赖注入(DI)和面向切面编程(AOP)简化了应用的开发...

    flex3的cookbook书籍完整版dpf(包含目录)

    flex3的cookbook书籍完整版dpf(包含目录),目录是我花了两个多小时自己整理的,希望对大家有帮助。 目录: 第一章.Flex与ActionScript基础(3) 1.1节.用FlexBuilder创建Flex项目 1.2节.用FlexBuilder创建Flex库项目 ...

Global site tag (gtag.js) - Google Analytics