`

Spring2事务管理的两种配置(XML&&标注)

阅读更多

package com.epeer.dao;

public interface UserDao ...{
    
public void insertUserIp(String startip, String endip);
}




package com.epeer.dao;
import java.text.MessageFormat;
import org.springframework.jdbc.core.support.JdbcDaoSupport;

public class UserDaoImpl extends JdbcDaoSupport implements UserDao ...{

    
private static final String INSERT = "insert into ipsegment(is_id, endip, startip) values(ipsegment_seq.nextval,''{0}'',''{1}'')";
    
public void insertUserIp(String startip, String endip) ...{
        getJdbcTemplate().execute(MessageFormat.format(INSERT, 
new Object[]...{startip, endip}));
    }

}



package com.epeer.service;

public interface UserService ...{
    
public void insertUserIp(String startip, String endip);
}



package com.epeer.service;

import org.springframework.transaction.annotation.Transactional;
import com.epeer.dao.UserDao;

public class UserServiceImpl implements UserService ...{

    
private UserDao userDao;

    
public UserDao getUserDao() ...{
        
return userDao;
    }


    
public void setUserDao(UserDao userDao) ...{
        
this.userDao = userDao;
    }


    
public void insertUserIp(String startip, String endip) ...{
        userDao.insertUserIp(
"192.168.0.3""0.0.0.0");
    }

}

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi
="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util
="http://www.springframework.org/schema/util"
    xmlns:p
="http://www.springframework.org/schema/p"
    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-2.0.xsd
http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-2.0.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd"

    default-autowire
="byName">
    
<!-- =========================================================================================== -->
    
<!--                                       加载属性文件                                          -->    
    
<!-- =========================================================================================== -->
    
<bean id="jdbcConfiguration"
        class
="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        
<property name="locations">
            
<list>
                
<value>classpath:jdbc-config.properties</value>
            
</list>
        
</property>
    
</bean>
    
<!-- =========================================================================================== -->
    
<!--                                       配置数据源                                            -->
    
<!-- =========================================================================================== -->
    
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method
="close" p:driverClassName="${jdbc_driver}"
        p:url
="${jdbc_url}" p:username="${username}" p:password="${password}"/>
    
<!-- =========================================================================================== -->
    
<!--                                       事务配置                                              -->
    
<!-- =========================================================================================== -->
    
<!-- Transaction manager for a single JDBC DataSource -->
    
    
<bean id="transactionManager"
        class
="org.springframework.jdbc.datasource.DataSourceTransactionManager"/>
    
<!--                  如果采用XML配置则用下面的配置                                              -->
    
<aop:config proxy-target-class="true">
        
<aop:advisor pointcut="execution(* com.epeer.service.*Impl.*(..))"
            advice-ref
="txAdvice"/>
    
</aop:config>
    
<tx:advice id="txAdvice" transaction-manager="transactionManager">
        
<tx:attributes>
            
<tx:method name="insert*" no-rollback-for="java.lang.Throwable"/>
            
<tx:method name="remove*"/>
            
<tx:method name="add*" no-rollback-for="java.lang.Throwable"/>
            
<tx:method name="*" read-only="true"/>
        
</tx:attributes>
    
</tx:advice>
    
<!--                  如果采用XML配置则用上面的配置                                              -->
    
<!--                  如果采用标注则去掉上面的配置,同时加入下面一行                             -->
    
<!--
    <tx:annotation-driven transaction-manager="transactionManager"/>

    <!-- =========================================================================================== 
-->
    
<!--                                       事务配置                                              -->
    
<!-- =========================================================================================== -->
    
<!-- Transaction manager for a single JDBC DataSource -->
    
<bean id="transactionManager"
        class
="org.springframework.jdbc.datasource.DataSourceTransactionManager"/>
    
<tx:annotation-driven transaction-manager="transactionManager"/>
    
<!-- =========================================================================================== -->
    
<!--                                       DAO配置                                               -->
    
<!-- =========================================================================================== -->
    
<bean id="userDao" class="com.epeer.dao.UserDaoImpl"/>
    
<!-- =========================================================================================== -->
    
<!--                                       Service配置                                           -->
    
<!-- =========================================================================================== -->
    
<bean id="userService" class="com.epeer.service.UserServiceImpl"/>

 采用标注的话UserServiceImpl如下

 

package com.epeer.service;

import org.springframework.transaction.annotation.Transactional;

import com.epeer.dao.UserDao;

@Transactional
public class UserServiceImpl implements UserService ...{

    
private UserDao userDao;

    
public UserDao getUserDao() ...{
        
return userDao;
    }


    
public void setUserDao(UserDao userDao) ...{
        
this.userDao = userDao;
    }


    @Transactional(noRollbackForClassName 
= "java.lang.Throwable")
    
public void insertUserIp(String startip, String endip) ...{
        userDao.insertUserIp(
"192.168.0.3""0.0.0.0");
    }

}

分享到:
评论

相关推荐

    spring3.0两种事务管理配置

    Spring 3.0 提供了两种事务管理配置方法:基于 XML 的事务管理和基于 @Transactional 的事务管理,这两种方法都是为了实现事务管理的目标,分别具有不同的配置方式和优缺点。 基于 XML 的事务管理 这种方法不需要...

    spring几种事务配置详解【精】

    在Spring框架中,事务管理是核心功能之一,它为应用程序提供了强大的事务控制能力,确保了数据的一致性和完整性。本文将深入探讨Spring中的几种事务配置方式,帮助开发者更好地理解和运用。 1. **编程式事务管理** ...

    spring事务与数据库操作

    Spring支持两种类型的事务管理:编程式事务管理和声明式事务管理。其中声明式事务管理因其易于使用和维护而被广泛采用。 ##### 1.1 Spring声明式事务介绍 Spring的声明式事务管理是通过配置文件或注解的方式来实现...

    Spring声明式事务配置模板2.x

    综上所述,Spring 2.x的声明式事务配置模板主要由`applicationContext.xml`中的事务管理器配置和注解驱动的事务管理两部分组成,结合`@Transactional`注解在业务逻辑中的使用,可以实现自动化、高效且易于维护的事务...

    spring声明式事务管理+jdbc+连接池.zip

    声明式事务管理主要有两种实现方式:基于XML的配置和基于注解的方式。基于XML的配置,可以在`&lt;tx:advice&gt;`标签中定义事务规则,并通过`&lt;aop:config&gt;`或`&lt;aop:aspectj-autoproxy&gt;`来关联到业务逻辑。而基于注解的方式...

    Spring 事务开发代码文件

    在Spring框架中,事务管理是核心功能之一,它为开发者提供了强大的事务控制能力,确保了数据的...在`springboot.tx`文件中,你可以找到这两种事务管理方式的具体实现,这对于理解和学习Spring事务管理是非常有价值的。

    J2EE mvc spring 配置

    Spring的配置主要分为XML配置和注解配置两种方式。XML配置文件中,开发者可以定义bean的实例化、依赖关系、属性值等。注解配置则允许开发者在类或方法上直接标注元数据,简化了配置过程。此外,Spring还提供了一个...

    Spring系列面试题129道(附答案解析)

    Spring配置文件是XML格式的文件,用于定义对象及其依赖关系,通过配置文件,Spring IoC容器可以管理这些对象的生命周期。 7、Spring应用程序有哪些不同组件? Spring应用程序的组件主要包括: - Beans:在Spring ...

    浅谈Spring的两种事务定义方式

    注解式事务是通过在Spring配置文件中定义一个事务管理对象,然后加入节点,引用该事务管理对象,然后即可在需要进行事务处理的类和方法使用@Transactional进行标注。 在使用注解式事务时,我们需要在Spring配置文件...

    spring简单项目源码(一)

    7. **XML配置与Java配置**:Spring支持两种配置方式,一种是传统的XML配置,另一种是基于Java的@Configuration类和@Bean注解的配置。Java配置方式更符合Java编程习惯,且可读性更强。 8. **bean的生命周期**:...

    Spring3.2小结

    总的来说,Spring 3.2提供了强大的IoC和DI功能,支持XML和注解两种配置方式,方便地处理集合注入,以及与Struts2和Hibernate的无缝集成。这些特性使得Spring成为开发复杂企业级应用的理想选择,降低了代码的耦合度,...

    spring基础教程.rar

    配置Bean的方式有两种:XML配置和注解配置。XML配置文件中,我们定义Bean的ID、类以及依赖关系;而注解配置则允许我们在类或方法上直接标注,使代码更加简洁。 接下来,我们要讨论的是Spring的AOP模块。AOP允许我们...

    struts2+spring+hibernate 实体

    **Spring** 是一个全面的企业级应用开发框架,不仅包含了IOC(Inversion of Control,控制反转)和AOP(Aspect-Oriented Programming,面向切面编程)两大核心特性,还提供了数据访问、事务管理、邮件服务、远程调用...

    spring常见的一些面试题

    1. **实现方式**:Spring提供了声明式和编程式两种事务管理方式。声明式事务管理通过`@Transactional`注解实现;编程式事务管理通过`PlatformTransactionManager`接口实现。 ### Spring MVC 1. **概念**:Spring ...

    spring2.0中文参考手册

    手册会详细介绍如何配置和使用这两种事务管理方式。 容器和上下文也是Spring框架的重要组成部分。Spring 2.0的容器负责管理Bean的生命周期和装配。手册会详细讲解Bean的生命周期回调方法、作用域以及如何使用...

    java毕业设计&课设-spring源码深度解析+注解开发全套视频教程(视频+源码).doc

    ##### 2.3 Spring事务管理 - **声明式事务管理**:通过XML或注解的方式进行事务管理,降低了代码的耦合度。 - **编程式事务管理**:通过编程的方式来管理事务,适用于更复杂的情况。 #### 三、Spring注解开发详解 ...

    spring+hibernate

    4. 整合Spring和Hibernate:在Spring配置中声明DAO实现,并启用Hibernate事务管理。 5. 编写业务逻辑:在服务层中注入DAO,调用其方法完成业务处理。 6. 测试:编写单元测试,确保各个组件协同工作。 在给定的...

    零基础认识 Spring Boot.docx

    可以将配置文件写成两个文件,application-dev.yml 和 application-prod.yml,在 application.yml 中指定调用的配置文件。这样可以根据不同的环境来切换配置文件。 注解的使用 @Component 和 @...

Global site tag (gtag.js) - Google Analytics