您的位置:首页 > 编程语言 > Java开发

spring+mybaits xml配置解析+事务相关+时序图

2018-01-08 20:31 513 查看
原文链接:http://www.spring4all.com/article/495  必看

(SqlSessionFactory  mapper生成代理类并代理   bean如何构造   实际执行sql时候调用代理类 创建了一个TransactionInterceptor的bean,作为事务切面的执行方法。标签解析    标签<aop:config>作用是创建了DefaultBeanFactoryPointcutAdvisor作为拦截器,把满足切点的bean进行代理使用事务拦截器进行拦截。具体标签逻辑   上面介绍完后就可以使用事务切面了,但是有时候还需要在具体类或者方法上进行注解行事务,那么这就需要加
<tx:annotation-driven transaction-manager="transactionManager" />配置    )时序图。

几篇spring事务相关:

1 spring+mybaits xml配置解析+事务相关+时序图:

 http://blog.csdn.net/wabiaozia/article/details/79006844   

2 spring事务处理时xml配置和注解Transactional配置哪个优先级高:

  http://blog.csdn.net/wabiaozia/article/details/78990687

3 spring事务和aop问题小结

http://blog.csdn.net/wabiaozia/article/details/78981368

部分摘选: 

        一般我们会在datasource.xml中进行如下配置,但是其中每个配置项原理和用途是什么,并不是那么清楚,如果不清楚的话,在使用时候就很有可能会遇到坑,所以下面对这些配置项进行一一解说

(1)配置数据源
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource" init-method="init" destroy-method="close">
<property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
<property name="url" value="${db_url}" />
<property name="username" value="$db_user}" />
<property name="password" value="${db_passwd}" />
<property name="maxWait" value="${db_maxWait}" />
<property name="maxActive" value="28" />
<property name="initialSize" value="2" />
<property name="minIdle" value="0" />
<property name="timeBetweenEvictionRunsMillis" value="db_time" />
</bean>

(2)创建sqlSessionFactory
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="mapperLocations" value="classpath*:com/**/mapper/*Mapper*.xml" />
<property name="dataSource" ref="dataSource" />
<property name="typeAliasesPackage" value="com.test.***.dal" />
</bean>

(3)配置扫描器,扫描指定路径的mapper生成数据库操作代理类
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="annotationClass" value="javax.annotation.Resource"></property>
<property name="basePackage" value="com.test.***.dal.***.mapper" />
<property name="sqlSessionFactory" ref="sqlSessionFactory" />
</bean>

(4)配置事务管理器
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource" />
</bean>

(5)声明使用注解式事务
<tx:annotation-driven transaction-manager="transactionManager" />
(6)注册各种beanfactory处理器
<context:annotation-config />

(7)该配置创建了一个TransactionInterceptor的bean,作为事务切面的执行方法
<tx:advice id="defaultTxAdvice">
<tx:attributes>
<tx:method name="*" rollback-for="Exception" />
</tx:attributes>
</tx:advice>

(8)该配置创建了一个DefaultBeanFactoryPointcutAdvisor的bean,该bean是一个advisor,里面包含了pointcut和advice.前者说明切面加在哪里,后者是执行逻辑。此处可以配多个advisor
<aop:config>
<aop:pointcut id="myCut" expression="(execution(* *..*BoImpl.*(..))) "/>
<aop:advisor pointcut-ref="myCut" advice-ref="defaultTxAdvice" />
</aop:config>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: