`
dreamoftch
  • 浏览: 496681 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

典型的Spring的applicationcontext.xml配置文件以及注解事物配置(转)

阅读更多

 注解配置事务:

 

 <!-- 启动注入功能 -->>
    <context:annotation-config />
    <!-- 启动扫描component功能 -->
    <context:component-scan base-package="org.mybatis.jpetstore" />
    <!-- 启动注解实物配置功能 -->
    <tx:annotation-driven transaction-manager="transactionManager" />
<!-- 数据源 -->
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
        <property name="url" value="jdbc:mysql://localhost:3306/test"></property>
        <property name="username" value="root"></property>
        <property name="password" value="root"></property>
    </bean>
<!-- 事务管理器 -->
 <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

 

 然后再需要配置的地方加上类似于这样的格式即可:

 

  @Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
  public void userTest() throws Exception {
	  User u1 = new User();
	  u1.setUsername("service 添加");
	  userMapper.insert(u1);
	  System.out.println("service 添加");
	  String s = null;
	  if(s == null){
		  throw new Exception("自定义异常");
	  }
	  u1 = new User();
	  u1.setUserId(4);
	  u1.setUsername("service 修改");
	  userMapper.update(u1);
	  System.out.println("service 修改");
  }

 

 

spring注解式事务管理实例

 

一.spring配置文件

这里使用spring命名空间,如下:

<?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: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-2.5.xsd
    http://www.springframework.org/schema/context
    http://www.springframework.org/schema/context/spring-context-2.5.xsd
    http://www.springframework.org/schema/tx
    http://www.springframework.org/schema/tx/spring-tx-2.5.xsd"
    default-autowire="byName"  default-lazy-init="true">

 

 <context:property-placeholder location="classpath:jdbc.properties" />


 <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
  destroy-method="close">
  <property name="driverClassName" value="${jdbc.driverClassName}" />
  <property name="url" value="${jdbc.url}" />
  <property name="username" value="${jdbc.username}" />
  <property name="password" value="${jdbc.password}" />
  <property name="initialSize" value="${jdbc.initialSize}" />
  <property name="maxActive" value="${jdbc.maxActive}" />
  <property name="maxIdle" value="${jdbc.maxIdle}" />
  <property name="minIdle" value="${jdbc.minIdle}" />
  <property name="maxWait" value="${jdbc.maxWait}" />
 </bean>

 <!-- 设定transactionManager -->
 <bean id="transactionManager"
  class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
  <property name="dataSource" ref="dataSource" />
 </bean>

<!--启动spring注解功能-->

 <tx:annotation-driven transaction-manager="transactionManager" />

 
</beans>

 

说明: 

1.如果事务管理器的id是transactionManager,这里可以不对transaction-manager进行配置,即<tx:annotation-driven />就可以。

2.这个配置是告诉spring在类(接口)层面或者方法层面上检查应用程序上下文中的所有标准了@Transactional的bean,spring将自动把事务通知的内容通知给它。

3.这个通知的事务参数将由@Transactional注释的参数来定义。

4.如果注释的是接口,则该接口的所有实现类都将被事务化。

 

二.使用@Transactional标注bean

 

 @Transactional(propagation=Propagation.REQUIRED,rollbackFor=Exception.class)
 public void method(){}  

 

记得要将这个bean加入到spring上下文中。

 

一般来说,上述两种事务策略就可以满足要求了,不过需要注意,注解功能的使用需要在项目中加入cglib-nodep-x.x_x.jar

 

 

 

一个典型的Spring的applicationcontext.xml配置文件

 

 

<?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: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/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">


    <bean id="sessionFactory"
        class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
        <property name="configLocation"
            value="classpath:hibernate.cfg.xml">
        </property>
    </bean>
    
    
    <!--  dao  -->
    <bean id="AdminDAO" class="dao.AdminDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="OnlineDAO" class="dao.OnlineDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="BbsDAO" class="dao.BbsDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory"/>
        </property>
    </bean>
     <bean id="CustomerDAO" class="dao.CustomerDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="DongtaiDAO" class="dao.DongtaiDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="ChanpinDAO" class="dao.ChanpinDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    <bean id="DailijiamengDAO" class="dao.DailijiamengDAO">
        <property name="sessionFactory">
            <ref bean="sessionFactory" />
        </property>
    </bean>
    
    
    <!-- 配置TransactionManager -->
    <bean id="myTxManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
        <property name="sessionFactory" ref="sessionFactory" />
    </bean>

    <!-- 配置事务策略 -->
    <tx:advice id="txAdvice" transaction-manager="myTxManager">
        <tx:attributes>
            <tx:method name="find*" propagation="REQUIRED"  read-only="true"/>
            <tx:method name="save*" propagation="REQUIRED"/>
            <tx:method name="update*" propagation="REQUIRED"/>
            <tx:method name="delete*" propagation="REQUIRED"/>
            <tx:method name="*" propagation="SUPPORTS" read-only="true" />
        </tx:attributes>
    </tx:advice>

    <aop:config>
        <aop:pointcut id="productServiceMethods" expression="execution(* service.*.*(..))" />
        <aop:advisor advice-ref="txAdvice" pointcut-ref="productServiceMethods" />
    </aop:config>
    
    
    <bean id="managerSeveice" class="service.managerService"> 
        <property name="adminDAO" ref="AdminDAO"/>
        <property name="onlineDAO" ref="OnlineDAO"/>
        <property name="bbsDAO" ref="BbsDAO"></property>
        <property name="customerDAO" ref="CustomerDAO"></property>
        <property name="dongtaiDAO" ref="DongtaiDAO"></property>
        <property name="chanpinDAO" ref="ChanpinDAO"></property>
        <property name="dailijiamengDAO" ref="DailijiamengDAO"></property>
    </bean>
    
    <bean id="base" class="com.lw.struts.action.BaseAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" >
        <property name="mgr" ref="managerSeveice"></property>
    </bean>
   
    
    <!-- admin -->
    <bean name="/manager_admin"
        class="com.lw.struts.action.Manager_adminAction" abstract="false"
        lazy-init="default" autowire="default" dependency-check="default">
        <property name="mgr" ref="managerSeveice"></property>
    </bean>    
    <bean name="/manager_save_update_admin"
        class="com.lw.struts.action.Manager_save_update_adminAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>    
    <bean name="/manager_update_admin"
        class="com.lw.struts.action.Manager_update_adminAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    
    <!-- online -->
    <bean name="/manager_online"
        class="com.lw.struts.action.Manager_onlineAction" abstract="false"
        lazy-init="default" autowire="default" dependency-check="default" parent="base">
    </bean>    
    <bean name="/manager_delete_online"
        class="com.lw.struts.action.Manager_delete_onlineAction" abstract="false"
        lazy-init="default" autowire="default" dependency-check="default" parent="base">
    </bean>    
    <bean name="/manager_insert_online"
        class="com.lw.struts.action.Manager_insert_onlineAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    
    <!-- bbs -->
    <bean name="/manager_bbs"
        class="com.lw.struts.action.Manager_bbsAction" abstract="false"
        lazy-init="default" autowire="default" dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_delete_bbs"
        class="com.lw.struts.action.Manager_delete_bbsAction" abstract="false"
        lazy-init="default" autowire="default" dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_insert_bbs"
        class="com.lw.struts.action.Manager_insert_bbsAction" abstract="false"
        lazy-init="default" autowire="default" dependency-check="default" parent="base">
    </bean>
    
    <!-- customer -->
    <bean name="/manager_customer"
        class="com.lw.struts.action.Manager_customerAction" abstract="false"
        lazy-init="default" autowire="default" dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_insert_customer"
        class="com.lw.struts.action.Manager_insert_customerAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_show_customer"
        class="com.lw.struts.action.Manager_show_customerAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_delete_customer"
        class="com.lw.struts.action.Manager_delete_customerAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    
    <!-- dongtai -->
    <bean name="/manager_dongtai"
        class="com.lw.struts.action.Manager_dongtaiAction" abstract="false"
        lazy-init="default" autowire="default" dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_insert_dongtai"
        class="com.lw.struts.action.Manager_insert_dongtaiAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_delete_dongtai"
        class="com.lw.struts.action.Manager_delete_dongtaiAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_update_dongtai"
        class="com.lw.struts.action.Manager_update_dongtaiAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_save_update_dongtai"
        class="com.lw.struts.action.Manager_save_update_dongtaiAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    
    <!-- chanpin -->
    <bean name="/manager_chanpin"
        class="com.lw.struts.action.Manager_chanpinAction" abstract="false"
        lazy-init="default" autowire="default" dependency-check="default" parent="base">
    </bean>    
    <bean name="/manager_delete_chanpin"
        class="com.lw.struts.action.Manager_delete_chanpinAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_insert_chanpin"
        class="com.lw.struts.action.Manager_insert_chanpinAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_update_chanpin"
        class="com.lw.struts.action.Manager_update_chanpinAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_save_update_chanpin"
        class="com.lw.struts.action.Manager_save_update_chanpinAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    
    <!-- dailijiameng -->
    <bean name="/manager_dailijiameng"
        class="com.lw.struts.action.Manager_dailijiamengAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_delete_dailijiameng"
        class="com.lw.struts.action.Manager_delete_dailijiamengAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_insert_dailijiameng"
        class="com.lw.struts.action.Manager_insert_dailijiamengAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_update_dailijiameng"
        class="com.lw.struts.action.Manager_update_dailijiamengAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/manager_save_update_dailijiameng"
        class="com.lw.struts.action.Manager_save_update_dailijiamengAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    <bean name="/testpage" class="com.lw.struts.action.TestpageAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default">
    </bean>
    
    <!-- login -->
    <bean name="/mlogin" class="com.lw.struts.action.MloginAction"
        abstract="false" lazy-init="default" autowire="default"
        dependency-check="default" parent="base">
    </bean>
    </beans>

 

分享到:
评论

相关推荐

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

    首先,`applicationContext.xml`是Spring的配置文件,其中包含了Spring容器的定义,包括Bean的定义、依赖注入以及事务管理的配置。在声明式事务配置中,我们需要在`&lt;beans&gt;`标签内添加`&lt;tx:annotation-driven&gt;`和`...

    Java SSM service层配置文件

    在SSM(Spring、SpringMVC、MyBatis)架构中,Service层作为业务逻辑的核心,它的配置文件——`applicationContext-service.xml`扮演着至关重要的角色。 `applicationContext-service.xml`文件是用来配置Service层...

    spring-mybatis.rar

    3. 配置Mapper:为每个Mapper接口创建对应的XML配置文件,定义SQL语句和结果映射。同时在Spring配置文件中声明MapperScannerConfigurer,扫描指定包下的Mapper接口。 4. 创建Service:在Service层中注入Mapper接口...

    在SSH中使用事物包括SSH的搭建和配置;事物的配置;注释详细

    2. **Spring** 的配置文件(如 applicationContext.xml)中,需要配置Bean,包括Service层和DAO层。对于事务管理,可以配置`&lt;tx:annotation-driven/&gt;`来启用基于注解的事务管理,或者使用`&lt;bean&gt;`标签手动配置`...

    mybatis与spring整合全部jar包(包括springmvc).zip

    2. 配置Spring:在Spring的配置文件中,如`applicationContext.xml`,配置SqlSessionFactory和SqlSessionTemplate。使用`mybatis-spring`模块提供的Bean定义,例如`SqlSessionFactoryBean`和`SqlSessionTemplate`。 ...

    在SSH中使用事物包括SSH的搭建和配置;事务的配置;注释详细。(完整项目)

    这允许开发者在XML配置文件中定义事务边界,而不是在代码中显式调用开始和结束事务。例如,可以在Spring的`applicationContext.xml`或`struts-config.xml`文件中配置事务管理器,并在服务层方法上添加`@...

    spring4.0.2+mybatis3.2.4+sharding-jdbc1.4.2实现分库分表、主从及事物支持

    在这个项目中,MyBatis被用于执行数据库操作,通过XML配置文件或注解定义SQL语句,与Spring结合后,可以利用Spring的事务管理进行数据库操作。 Sharding-JDBC 1.4.2 是阿里巴巴开源的分库分表中间件,它可以无缝...

    struts2+spring+hibernate 事物实例完整的例子

    在集成这三个框架时,通常会创建一个Spring的配置文件,如`applicationContext.xml`,在这个文件中定义数据源、SessionFactory、事务管理器以及Service层bean。例如: ```xml &lt;bean id="dataSource" class="org....

    SSI框架搭建实例教程(struts spring ibatis整合 附切面事物处理)

    - `applicationContext.xml`是Spring的核心配置文件,用于定义bean的实例化和依赖注入。在这里,配置了数据源`dataSource`,iBatis的`SqlMapClient`以及事务管理器`transactionManager`。 - 数据源配置中,设置了...

    spirngMVC3.2+spring3.2+hibernate4.1搭建

    - 配置 Spring MVC 的 web.xml 和 Spring 核心配置文件(如 applicationContext.xml)。 - 配置 Hibernate,包括数据库连接、实体扫描、SessionFactory 创建等。 - 编写控制器、服务层、DAO 层代码,使用注解进行...

    jdbc+spring+mysql事务理解和分析

    此外,配置文件`applicationContext.xml`中的`dataSource`定义了数据源,用于连接MySQL数据库。这里使用了Apache Commons DBCP库来管理数据库连接池,提高了数据库操作的效率。配置包括数据库驱动类、URL、用户名和...

    ssm事物配置

    &lt;bean id="transactionManager" class="org.springframework.orm.hibernate5.HibernateTransactionManager"&gt; ``` - 然后在Service类中,使用@Transactional注解标记需要事务的方法: ```java @Service ...

    XA 多数据源分布式事物实现 java

    这通常涉及到XML配置文件(如Spring的applicationContext.xml)或Java配置类。 6. **异常处理**:在分布式事务中,必须正确处理异常,因为网络问题、资源故障等都可能导致事务失败。项目可能包含了异常处理机制,...

    Java面试框架高频问题2019

    1. **XML配置文件**:通过`&lt;bean&gt;`标签配置bean及其依赖关系。 2. **注解方式**:使用如`@Component`, `@Service`, `@Repository`等注解标注类,通过`@Autowired`进行依赖注入。 3. **Java配置**:通过`@...

    Java常见面试题(内含答案)

    #### 七、Spring框架中的Web.xml配置 1. **Spring核心配置**: - 配置`ContextLoaderListener`类,该类会在Web应用启动时加载指定的Spring配置文件。 - 指定Spring配置文件的位置,例如: ```xml ...

    值得收藏的2017年Java开发岗位面试题

    Web.xml是Java Web应用程序的配置文件,用于配置Servlet、Filter和Listener等组件。 四、JVM 1. Java的内存模型以及GC算法。 Java的内存模型包括堆、栈、方法区和寄存器等,GC算法包括标记-清除算法、复制算法和...

Global site tag (gtag.js) - Google Analytics