wordpress 美化插件,自己怎样优化网站,手机网站搜索,道农网站建设目录
Spring事务编程概述
基于xml声明式事务控制
事务属性
isolation
timeout
read-only
propagation
全注解开发 Spring事务编程概述 事务是开发中必不可少的东西#xff0c;使用JDBC开发时#xff0c;我们使用connection对事务进行控制#xff0c;使用MyBatis时使用JDBC开发时我们使用connection对事务进行控制使用MyBatis时我们使用SqlSession对事务进行控制缺点显而易见当我们切换数据库访问技术时事务控制的方式总会变化 基于xml声明式事务控制
结合上面学习的AOP技术我们可以对Service的方法进行事务的增强 目标类自定义的AccountServiceImpl内部方法是切点 通知类Spring提供的通知方法已经定义好的只需配置 步骤 1.导入Spring事务的相关的坐标 2.配置目标类AccountServiceImpl 3.使用advisor标签配置切面 为什么用advisor标签配置切面 假设使用aspect的话需要一个通知类一级配置一系列通知方法标签 而advisor只需要实现接口重写方法就可以配置简单 !-- 包扫描 --context:component-scan base-packagecom.xfy/context:component-scan
!-- JDBC.properties --context:property-placeholder locationclasspath:jdbc.properties/context:property-placeholder!-- 整合Mybatis--
!-- SqlSessionFactory --bean classorg.mybatis.spring.SqlSessionFactoryBeanproperty namedataSource refdataSource/property/bean
!-- mapper --bean classorg.mybatis.spring.mapper.MapperScannerConfigurerproperty namebasePackage valuecom.xfy.mapper/property/bean
!-- dataSource --bean iddataSource classcom.alibaba.druid.pool.DruidDataSourceproperty namedriverClassName value${jdbc.driver}/property nameurl value${jdbc.url}/property nameusername value${jdbc.username}/property namepassword value${jdbc.password}//bean
!-- 配置平台事务管理器 --bean idtransactionManager classorg.springframework.jdbc.datasource.DataSourceTransactionManagerproperty namedataSource refdataSource/property/bean
!-- Spring提供好的事务增强通知--tx:advice idmyadvice transaction-managertransactionManagertx:attributestx:method name*//tx:attributes/tx:advice
!-- 事务增强的aop --aop:config
!-- 切点 --aop:pointcut idtransforMoney expressionexecution(void com.xfy.service.impl.AcountServiceImpl.transforMoney(..))/aop:advisor advice-refmyadvice pointcut-reftransforMoney/aop:advisor/aop:config
其中有注释可以了解一下
!-- Spring提供好的事务增强通知--tx:advice idmyadvice transaction-managertransactionManagertx:attributes
!-- 配置事务属性 --
!-- name方法名 * 通配符 ( 添加操作 addXXX addYYY addZZZ add* )--
!-- 下面·这个意味着对transforMoney方法配置独属于她的事务属性--
!-- 从上往下匹配 匹配到就不往下 --tx:method nametransforMoney isolationREAD_COMMITTED timeout3 read-onlyfalse propagationREQUIRED/tx:method name*//tx:attributes/tx:advice
事务属性
这个补充一下事务属性
isolation timeout 超时时间默认为-1没有超时时间 单位秒s read-only 是否只读查询操作才只读其他默认 propagation 事务传播行为解决业务方法调用业务方法事务嵌套问题 全注解开发
Configuration
ComponentScan(basePackages {com.xfy})
MapperScan(basePackages {com.xfy.mapper})
PropertySource(classpath:jdbc.properties)
EnableTransactionManagement//事务自动管理
public class SpringConfig {Beanpublic DataSource dataSource(Value(${jdbc.driver}) String driver,Value(${jdbc.url}) String url,Value(${jdbc.username}) String username,Value(${jdbc.password}) String password){DruidDataSource dataSourcenew DruidDataSource();dataSource.setDriverClassName(driver);dataSource.setUrl(url);dataSource.setUsername(username);dataSource.setPassword(password);return dataSource;}Beanpublic SqlSessionFactoryBean sqlSessionFactoryBean(DataSource dataSource){SqlSessionFactoryBean sqlSessionFactoryBeannew SqlSessionFactoryBean();sqlSessionFactoryBean.setDataSource(dataSource);return sqlSessionFactoryBean;}Beanpublic DataSourceTransactionManager transactionManager(DataSource dataSource){DataSourceTransactionManager dataSourceTransactionManagernew DataSourceTransactionManager();dataSourceTransactionManager.setDataSource(dataSource);return dataSourceTransactionManager;}
}