.Spring事务管理
spring.xml
<!-- 加载属性配置文件 --> <util:properties id="db" location="classpath:db.properties" /> <!-- 定义数据源 --> <bean id="ds" class="org.apache.commons.dbcp.BasicDataSource"> <property name="driverClassName" value="#{db.driver}"></property> <property name="url" value="#{db.url}"></property> <property name="username" value="#{db.user}"></property> <property name="password" value="#{db.pwd}"></property> </bean> <!-- 定义SQLSessionFactoryBean组件 --> <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean" > <!-- 没有了MyBatis的主配置文件 --> <!-- 需要指定连接资源 --> <property name="dataSource" ref="ds"></property> <!-- 需要指定映射文件 --> <property name="mapperLocations" value="classpath:com/xms/entity/mapper/*.xml"></property> </bean> <!-- 定义MapperScannerrConfigurer扫描组件 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" > <!-- 指定Mapper接口扫描包 --> <property name="basePackage" value="com.xms.dao" ></property> <!-- 手动指定SqlSessionFactory对象 --> <!-- sqlSessionFactory属性可以不用指定,它会以Autowired方式自动注入 --> <property name="sqlSessionFactory" ref="sqlSessionFactoryBean" ></property> <!-- 推荐使用注解方法 --> <!-- <property name="annotationClass" value="com.xms.common.MyAnnontation" ></property> --> <!-- 接口方法 --> <property name="markerInterface" value="com.xms.common.Myinterface" /> </bean> <!-- 开启注解扫描 --> <context:component-scan base-package="com.xms"/> <!-- 声明事务管理组件 --> <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" > <property name="dataSource" ref="ds"></property> </bean> <!-- 开启事务注解扫描 --> <tx:annotation-driven transaction-manager="dataSourceTransactionManager" /> </beans>
3.XML配置实现声明式事务
<!-- 开启注解扫描 --> <context:component-scan base-package="com.xms"/> <!-- 声明事务管理组件 --> <bean id="dataSourceTransactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager" > <property name="dataSource" ref="ds"></property> </bean> <!-- XML配置声明式事务返回及类型 --> <tx:advice id="txAdvice" transaction-manager="transactionManager"> <tx:attributes> <tx:method name="add*" propagation="REQUIRED"/> <!-- 给所有service组件中以add开头的所有方法添加事务管理控制 --> <tx:method name="find*" read-only="true"/> <tx:method name="*" propagation="REQUIRED" /> </tx:attributes> </tx:advice> <aop:config> <aop:advisor advice-ref="txAdvice" pointcut="within(com.xms.service.EmpService)" /> <!-- 配置作用域范围 --> </aop:config>