spring 注解事务的问题

jiangtao 发布于 2012/01/11 18:03
阅读 2K+
收藏 1

配置文件

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


    <context:component-scan base-package="sping.jdbc*"></context:component-scan>

    <!-- 数据源默认将autoCommit设置为true -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"
        destroy-method="close">
        <property name="driverClass" value="${jdbc.driverClassName}" />
        <property name="jdbcUrl" value="${jdbc.url}" />
        <property name="user" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
    </bean>

    <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
        <property name="dataSource">
            <ref bean="dataSource" />
        </property>
    </bean>

    <!-- 事务管理配置 -->
    <bean id="myTxManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" >
        </property>
    </bean>
    <tx:annotation-driven transaction-manager="myTxManager" />

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

我配置上事务之后,但是我并没有在dao层标记@Transactional,而dao层还是使用了事务,

这点我十分不解,难道是默认启用了事务?难道他为所有的类所有的方法都添加了事务管理吗?

加载中
0
永明
永明

你没有配置切入点,可能Spring就默认为所有方法启用事务。我给你贴一段我配置的事务。不过现在我喜欢用注解方式配置。

<!-- 配置事务切面Bean,指定事务管理器 -->
      <tx:advice id="txAdvice" transaction-manager="transactionManager">
	 <!-- 用于配置详细的事务语义 -->
	 <tx:attributes>
		<!-- 所有以'get'开头的方法是read-only的 -->
		<tx:method name="get*" read-only="true"/>
		<!-- 其他方法使用默认的事务设置 -->
		<tx:method name="*"/>
	</tx:attributes>
    </tx:advice>
    <aop:config>
	<!-- 配置一个切入点,匹配zym.service包下
		所有以Impl结尾的类的所有方法的执行 -->
	<aop:pointcut id="zymPointcut"
		expression=
		"execution(* org.zymming.eosystem.service.impl.*Impl.*(..))"/>
	   <!-- 指定在txAdvice切入点应用txAdvice事务切面 -->
	  <aop:advisor advice-ref="txAdvice" 
		pointcut-ref="zymPointcut"/>
    </aop:config>

 

 

0
周青武

回答的是AOP,和注解事务不一样吧。。。

返回顶部
顶部