日期:2014-05-17  浏览次数:20771 次

spring注释方式事务管理不生效,请各位帮忙看看
spring配置如下:
<context:annotation-config />
<!-- 配置注入信息的包 -->
<context:component-scan base-package="*" />
<!-- 声明事务名称 -->
<tx:annotation-driven transaction-manager="transactionManager" />

<bean id="dataSourceDefault" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver"/>
<property name="url" value="jdbc:oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=off) 
(ADDRESS=(PROTOCOL=TCP)(HOST=172.168.1.231) (PORT=1521))
(CONNECT_DATA=(SERVICE_NAME=bss)))"/>
<property name="username" value="demo1"/>
<property name="password" value="demo1"/> 
</bean>
<bean id="dataSource" class="com.common.db.DynamicDataSource">
<property name="targetDataSources">
<map key-type="java.lang.String">
<entry key="290" value-ref="dataSourceDefault" />
</map>
</property>
<property name="defaultTargetDataSource" ref="dataSourceDefault" />
</bean>
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="configLocation" value="classpath:mybatis-config.xml" />
</bean>

serviceimpl
/**
* 使用方法上声明的事务管理策略,这里的意思为需要在一个事务中运行
*/
@Override
@Transactional(rollbackFor=Exception.class)
public boolean addInfoOrder(Map<String, Object> param) {
   
  }

事务一直没有一效,请帮忙看下那的顺题呀

------解决方案--------------------
你的类上要有@Serive 注解
------解决方案--------------------
2楼正解 把你的serviceimpl类交给spring管理 不过给人感觉事务还是通过XML配置比较好