- 浏览: 3424078 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (1633)
- Java (250)
- Android&HTML5 (111)
- Struts (10)
- Spring (236)
- Hibernate&MyBatis (115)
- SSH (49)
- jQuery插件收集 (55)
- Javascript (145)
- PHP (77)
- REST&WebService (18)
- BIRT (27)
- .NET (7)
- Database (105)
- 设计模式 (16)
- 自动化和测试 (19)
- Maven&Ant (43)
- 工作流 (36)
- 开源应用 (156)
- 其他 (16)
- 前台&美工 (119)
- 工作积累 (0)
- OS&Docker (83)
- Python&爬虫 (28)
- 工具软件 (157)
- 问题收集 (61)
- OFbiz (6)
- noSQL (12)
最新评论
-
HEZR曾嶸:
你好博主,这个不是很理解,能解释一下嘛//左边+1,上边+1, ...
java 两字符串相似度计算算法 -
天使建站:
写得不错,可以看这里,和这里的这篇文章一起看,有 ...
jquery 遍历对象、数组、集合 -
xue88ming:
很有用,谢谢
@PathVariable映射出现错误: Name for argument type -
jnjeC:
厉害,困扰了我很久
MyBatis排序时使用order by 动态参数时需要注意,用$而不是# -
TopLongMan:
非常好,很实用啊。。
PostgreSQL递归查询实现树状结构查询
sping配置多个数据源 不同用户操作不同数据库 http://www.oschina.net/code/snippet_2287006_56769
1:spring3.0之后不再支持jtom[jta]了,第三方开源软件atomikos(http://www.atomikos.com/)来实现.
2:org.springframework.transaction.jta.JotmFactoryBean类,spring-tx-2.5.6.jar中有此类,spring-tx-3.0.0.RELEASE.jar之后没有此类。
3:atomikos事务控制框架,其中看到有3种数据源,分别是,SimpleDataSourceBean,AtomikosDataSourceBean,AtomikosNonXADataSourceBean。
a:SimpleDataSourceBean: 这个是最简单地数据源配置,需要配置XA驱动。
b:AtomikosDataSourceBean: 分布式数据源,Atomikos实现的数据源,需要配置XA驱动,推荐此配置,可以配置连接池的信息。
c:AtomikosNonXADataSourceBean: 非分布式数据源,该数据源配置需要普通JDBC的驱动,可以配置连接池:
4:Atomikos支持XA(全局事务)和NON-XA(非全局事务),NON-XA[nonxadatasource]效率高于XA.XA事务往往是包括多个数据源的全局事务,非XA是单个数据源的.
5:XA连接是一个JTA事务中的参与者。XA连接不支持JDBC的自动提交特性。也就是说应用程序不必在xadatasource[XA]连接上调用
jta.properties
第一方式: 原生的Atomikos
spring+mybatis+Atomikos JTA事务配置说明 http://lizhao6210-126-com.iteye.com/blog/1958831
db.properties
applicationContext-mybatis-atomikos.xml
第二种方式:Atomikos + Druid
atomikos支持一个分布式事务,结合spring,可以很好的满足一个应用访问多个库的需要。
Spring多数据源分布式事务管理/springmvc+spring+atomikos[jta]+druid+mybatis http://www.codexiu.cn/mysql/blog/10637/, 这里有bean继承方式配置, 配置有所修改: 执行成功之后, 记录数多的时候很慢,超过10w条记录,可能会出现连接关闭异常
maven
db.properties
applicationContext-mybatis-atomikos-druid.xml
对非主数据库的DAO, 要手动注入相应的SqlSessionTemplate
配置方式: 推荐这种方式
applicationContext-mybatis-atomikos-dao.xml
注解方式: 为测试, 可能无法使用这种方式
1:spring3.0之后不再支持jtom[jta]了,第三方开源软件atomikos(http://www.atomikos.com/)来实现.
2:org.springframework.transaction.jta.JotmFactoryBean类,spring-tx-2.5.6.jar中有此类,spring-tx-3.0.0.RELEASE.jar之后没有此类。
3:atomikos事务控制框架,其中看到有3种数据源,分别是,SimpleDataSourceBean,AtomikosDataSourceBean,AtomikosNonXADataSourceBean。
a:SimpleDataSourceBean: 这个是最简单地数据源配置,需要配置XA驱动。
b:AtomikosDataSourceBean: 分布式数据源,Atomikos实现的数据源,需要配置XA驱动,推荐此配置,可以配置连接池的信息。
c:AtomikosNonXADataSourceBean: 非分布式数据源,该数据源配置需要普通JDBC的驱动,可以配置连接池:
4:Atomikos支持XA(全局事务)和NON-XA(非全局事务),NON-XA[nonxadatasource]效率高于XA.XA事务往往是包括多个数据源的全局事务,非XA是单个数据源的.
5:XA连接是一个JTA事务中的参与者。XA连接不支持JDBC的自动提交特性。也就是说应用程序不必在xadatasource[XA]连接上调用
jta.properties
com.atomikos.icatch.service=com.atomikos.icatch.standalone.UserTransactionServiceFactory com.atomikos.icatch.console_file_name = /home/pandy/astomikos/tx.out.log com.atomikos.icatch.log_base_name = txlog com.atomikos.icatch.tm_unique_name = com.atomikos.spring.jdbc.tm com.atomikos.icatch.console_log_level=DEBUG com.atomikos.icatch.max_timeout=30000 com.atomikos.icatch.default_jta_timeout=30000
第一方式: 原生的Atomikos
spring+mybatis+Atomikos JTA事务配置说明 http://lizhao6210-126-com.iteye.com/blog/1958831
<dependency> <groupId>com.atomikos</groupId> <artifactId>transactions</artifactId> <!--<version>4.0.2</version>--> <version>3.9.3</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-api</artifactId> <!--<version>4.0.2</version>--> <version>3.9.3</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>atomikos-util</artifactId> <!--<version>4.0.2</version>--> <version>3.9.3</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jdbc-deprecated</artifactId> <version>3.8.0</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jta</artifactId> <!--<version>4.0.2</version>--> <version>3.9.3</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jdbc</artifactId> <!--<version>4.0.2</version>--> <version>3.9.3</version> </dependency>
db.properties
#单数据库方式, 第一个数据库 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://192.168.0.198:3306/pandy_psi?useUnicode=true&characterEncoding=utf8 jdbc.username=pandy jdbc.password=111111 #多数据库方式 jdbc.xaDataSourceClassName=com.mysql.jdbc.jdbc2.optional.MysqlXADataSource #第二个数据库 jdbc.url1=jdbc:mysql://192.168.0.198:3306/zhenh5?useUnicode=true&characterEncoding=utf8 transactionManager.forceShutdown =true transactionManager.transactionTimeout=3000 #*********************atomikos连接池参数设置***************************** #连接池中保留的最小连接数 atomikos.minPoolSize=5 #连接池中保留的最大连接数 atomikos.maxPoolSize=50 #最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 atomikos.maxIdleTime=60
applicationContext-mybatis-atomikos.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 第一个数据库 --> <bean id="dataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close"> <property name="uniqueResourceName" value="dataSource" /> <property name="xaDataSourceClassName" value="${jdbc.xaDataSourceClassName}" /> <property name="xaProperties"> <props> <prop key="user">${jdbc.username}</prop> <prop key="password">${jdbc.password}</prop> <prop key="url">${jdbc.url}</prop> </props> </property> <property name="minPoolSize" value="${atomikos.minPoolSize}" /> <property name="maxPoolSize" value="${atomikos.maxPoolSize}" /> <property name="maxIdleTime" value="${atomikos.maxIdleTime}" /> </bean> <!-- 第二个数据库 --> <bean id="dataSourceB" class="com.atomikos.jdbc.AtomikosDataSourceBean" init-method="init" destroy-method="close"> <property name="uniqueResourceName" value="dataSourceB" /> <property name="xaDataSourceClassName" value="${jdbc.xaDataSourceClassName}" /> <property name="xaProperties"> <props> <prop key="user">${jdbc.username}</prop> <prop key="password">${jdbc.password}</prop> <prop key="url">${jdbc.url1}</prop> </props> </property> <property name="minPoolSize" value="${atomikos.minPoolSize}" /> <property name="maxPoolSize" value="${atomikos.maxPoolSize}" /> <property name="maxIdleTime" value="${atomikos.maxIdleTime}" /> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pandy.framework.base.comm.bean,com.pandy.framework.base.atomikos.bean,com.pandy.app.bean,com.pandy.web.bean,com.pandy.weixin.bean,com.pandy.psi.bean" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pandy.framework.base.atomikos.bean1" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryB"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" name="sqlSessionFactory"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath*:com/**/bean/**/*Mapper.xml"/> <property name="typeAliasesPackage" value="com.pandy.framework.base.comm.bean,com.pandy.framework.base.atomikos.bean,com.pandy.app.bean,com.pandy.web.bean,com.pandy.weixin.bean,com.pandy.psi.bean"></property> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageHelper"> <property name="properties"> <value> dialect=mysql </value> </property> </bean> </array> </property> </bean> <bean id="sqlSessionFactoryB" class="org.mybatis.spring.SqlSessionFactoryBean" name="sqlSessionFactoryB"> <property name="dataSource" ref="dataSourceB"/> <property name="mapperLocations" value="classpath*:com/**/bean1/**/*Mapper.xml"/> <property name="typeAliasesPackage" value="com.pandy.framework.base.atomikos.bean1"></property> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageHelper"> <property name="properties"> <value> dialect=mysql </value> </property> </bean> </array> </property> </bean> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean id="sqlSessionTemplateB" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactoryB" /> </bean> <!-- 定义事务 --> <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <property name="forceShutdown"> <value>true</value> </property> </bean> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"> <property name="transactionTimeout" value="300" /> </bean> <bean id="springTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager"> <ref bean="atomikosTransactionManager" /> </property> <property name="userTransaction"> <ref bean="atomikosUserTransaction" /> </property> <property name="allowCustomIsolationLevels" value="true"/> </bean> <tx:annotation-driven transaction-manager="springTransactionManager" proxy-target-class="true"/> </beans>
第二种方式:Atomikos + Druid
atomikos支持一个分布式事务,结合spring,可以很好的满足一个应用访问多个库的需要。
Spring多数据源分布式事务管理/springmvc+spring+atomikos[jta]+druid+mybatis http://www.codexiu.cn/mysql/blog/10637/, 这里有bean继承方式配置, 配置有所修改: 执行成功之后, 记录数多的时候很慢,超过10w条记录,可能会出现连接关闭异常
maven
<dependency> <groupId>com.atomikos</groupId> <artifactId>transactions</artifactId> <version>4.0.2</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-api</artifactId> <version>4.0.2</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>atomikos-util</artifactId> <version>4.0.2</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jdbc-deprecated</artifactId> <version>3.8.0</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jta</artifactId> <version>4.0.2</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jdbc</artifactId> <version>4.0.2</version> </dependency>
db.properties
#帐号和密码 jdbc.username=pandy jdbc.password=111111 validationQuery=SELECT 1 #第一个数据库 jdbc.url=jdbc:mysql://192.168.0.198:3306/pandy_psi?useUnicode=true&characterEncoding=utf8 #第二个数据库 jdbc.url1=jdbc:mysql://192.168.0.198:3306/zhenh5?useUnicode=true&characterEncoding=utf8 #多数据库方式2 Atomikos + Druid jdbc.driver=org.gjt.mm.mysql.Driver jdbc.xaDataSourceClassName=com.alibaba.druid.pool.xa.DruidXADataSource transactionManager.forceShutdown =true transactionManager.transactionTimeout=3000 #*********************atomikos连接池参数设置***************************** #连接池中保留的最小连接数 atomikos.minPoolSize=5 #连接池中保留的最大连接数 atomikos.maxPoolSize=50 #最大空闲时间,60秒内未使用则连接被丢弃。若为0则永不丢弃。Default: 0 atomikos.maxIdleTime=60
applicationContext-mybatis-atomikos-druid.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <bean id="abstractXADataSource" class="com.atomikos.jdbc.AtomikosDataSourceBean" lazy-init="true" init-method="init" destroy-method="close" abstract="true"> <property name="xaDataSourceClassName" value="${jdbc.xaDataSourceClassName}"/> <!-- SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana] --> <property name="poolSize" value="15" /> <property name="minPoolSize" value="10"/> <property name="maxPoolSize" value="20"/> <property name="borrowConnectionTimeout" value="60"/> <property name="reapTimeout" value="20"/> <property name="maxIdleTime" value="60"/> <property name="maintenanceInterval" value="60"/> <property name="loginTimeout" value="60"/> <property name="testQuery" value="${validationQuery}"/> </bean> <!-- 第一个数据库 --> <bean id="dataSource" parent="abstractXADataSource"> <property name="uniqueResourceName" value="dataSource" /> <property name="xaProperties"> <props> <prop key="driverClassName">${jdbc.driver}</prop> <prop key="url">${jdbc.url}</prop> <prop key="password">${jdbc.password}</prop> <prop key="username">${jdbc.username}</prop> <!-- durid --> <prop key="initialSize">0</prop> <prop key="maxActive">20</prop> <!-- 若不配置则代码执行"{dataSource-1} inited"此处停止 --> <prop key="minIdle">0</prop> <prop key="maxWait">60000</prop> <prop key="validationQuery">${validationQuery}</prop> <prop key="testOnBorrow">false</prop> <prop key="testOnReturn">false</prop> <prop key="testWhileIdle">true</prop> <prop key="removeAbandoned">true</prop> <prop key="removeAbandonedTimeout">1800</prop> <prop key="logAbandoned">true</prop> <prop key="filters">mergeStat</prop> </props> </property> </bean> <!-- 第二个数据库 --> <bean id="dataSourceB" parent="abstractXADataSource"> <property name="uniqueResourceName" value="dataSourceB" /> <property name="xaProperties"> <props> <prop key="driverClassName">${jdbc.driver}</prop> <prop key="url">${jdbc.url1}</prop> <prop key="password">${jdbc.password}</prop> <prop key="username">${jdbc.username}</prop> <prop key="initialSize">0</prop> <prop key="maxActive">20</prop> <prop key="minIdle">0</prop> <prop key="maxWait">60000</prop> <prop key="validationQuery">${validationQuery}</prop> <prop key="testOnBorrow">false</prop> <prop key="testOnReturn">false</prop> <prop key="testWhileIdle">true</prop> <prop key="removeAbandoned">true</prop> <prop key="removeAbandonedTimeout">1800</prop> <prop key="logAbandoned">true</prop> <prop key="filters">mergeStat</prop> </props> </property> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pandy.framework.base.comm.bean,com.pandy.framework.base.atomikos.bean,com.pandy.app.bean,com.pandy.web.bean,com.pandy.weixin.bean,com.pandy.psi.bean" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/> </bean> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.pandy.framework.base.atomikos.bean1" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryB"/> </bean> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean" name="sqlSessionFactory"> <property name="dataSource" ref="dataSource"/> <property name="mapperLocations" value="classpath*:com/**/bean/**/*Mapper.xml"/> <property name="typeAliasesPackage" value="com.pandy.framework.base.comm.bean,com.pandy.framework.base.atomikos.bean,com.pandy.app.bean,com.pandy.web.bean,com.pandy.weixin.bean,com.pandy.psi.bean"></property> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageHelper"> <property name="properties"> <value> dialect=mysql </value> </property> </bean> </array> </property> </bean> <bean id="sqlSessionFactoryB" class="org.mybatis.spring.SqlSessionFactoryBean" name="sqlSessionFactoryB"> <property name="dataSource" ref="dataSourceB"/> <property name="mapperLocations" value="classpath*:com/**/bean1/**/*Mapper.xml"/> <property name="typeAliasesPackage" value="com.pandy.framework.base.atomikos.bean1"></property> <property name="plugins"> <array> <bean class="com.github.pagehelper.PageHelper"> <property name="properties"> <value> dialect=mysql </value> </property> </bean> </array> </property> </bean> <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory" /> </bean> <bean id="sqlSessionTemplateB" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactoryB" /> </bean> <!-- 定义事务 --> <bean id="atomikosTransactionManager" class="com.atomikos.icatch.jta.UserTransactionManager" init-method="init" destroy-method="close"> <property name="forceShutdown"> <value>true</value> </property> </bean> <bean id="atomikosUserTransaction" class="com.atomikos.icatch.jta.UserTransactionImp"> <property name="transactionTimeout" value="300" /> </bean> <bean id="springTransactionManager" class="org.springframework.transaction.jta.JtaTransactionManager"> <property name="transactionManager"> <ref bean="atomikosTransactionManager" /> </property> <property name="userTransaction"> <ref bean="atomikosUserTransaction" /> </property> <property name="allowCustomIsolationLevels" value="true"/> </bean> <tx:annotation-driven transaction-manager="springTransactionManager" proxy-target-class="true"/> </beans>
对非主数据库的DAO, 要手动注入相应的SqlSessionTemplate
配置方式: 推荐这种方式
applicationContext-mybatis-atomikos-dao.xml
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:tx="http://www.springframework.org/schema/tx" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd"> <!-- 因为这里使用了第二个数据库, 所以不能使用注解, 注解会注入sqlSessionTemplate, 而不是注入sqlSessionTemplateB, 会提示找不到Mapped Statements --> <bean id="testAtomikosBDao" class="com.pandy.framework.base.atomikos.dao.impl.TestAtomikosBDaoImpl"> <property name="sqlSessionTemplate" ref="sqlSessionTemplateB"/> </bean> </beans>
注解方式: 为测试, 可能无法使用这种方式
@Repository("testAtomikosBDao") public class TestAtomikosBDaoImpl{ @Resource(name="sqlSessionTemplateB") private SqlSessionTemplate sqlSessionTemplate; }
发表评论
-
Spring Boot 属性配置
2016-06-24 11:04 1182Spring Boot 属性配置和使用 http://blog ... -
Spring Boot 集成MyBatis
2016-06-24 10:55 2028Spring Boot 集成MyBatis http://bl ... -
Spring MVC防重复提交
2016-06-17 15:47 1646http://my.oschina.net/zyqjustin ... -
Spring容器加载完之后执行特定任务
2016-06-17 15:36 2288http://my.oschina.net/simpleton ... -
使用spring-session和shiro来代理session的配置
2016-06-16 11:21 12059使用spring-session和redis来代理sessio ... -
JSTL 的 if else : 有 c:if 没有 else 的处理
2016-06-14 09:52 1336http://blog.csdn.net/xiyuan1999 ... -
spring mvc 请求转发和重定向
2016-06-14 09:48 1399http://blog.csdn.net/jackpk/art ... -
mvc:view-controller
2016-05-18 10:26 1084http://blog.csdn.net/lzwglory/a ... -
spring配置事物的方式:注解和aop配置
2016-05-14 00:26 4104参考: Spring AOP中pointcut express ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2287http://www.oschina.net/p/uncode ... -
写个mybatis的拦截插件,实现将所有执行的sql写入文件里
2016-05-12 15:59 5105原文 http://3131854.blog.51cto.co ... -
Mybatis分库分表扩展插件
2016-05-12 15:47 1625http://fangjialong.iteye.com/bl ... -
Spring中使用注解 @Scheduled执行定时任务
2016-05-10 09:39 1567原文:http://dwf07223.blog.51cto.c ... -
Spring中配置Websocket
2016-05-05 16:55 1277spring+websocket整合(springMVC+sp ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1316集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4795使用Spring-data进行Redis操作 http://z ... -
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
2016-05-03 13:35 1061Spring4新特性——集成Bean Validation 1 ... -
SpringMVC介绍之Validation
2016-05-03 13:10 984SpringMVC介绍之Validation http://h ... -
spring 注解方式下使用commons-validator 验证表单
2016-05-03 11:08 3077原文: http://www.programgo.com/ar ... -
Spring MVC学习详解
2016-04-28 09:13 1003原文 http://blog.csdn.net/alsocod ...
相关推荐
本文将深入探讨如何使用Spring、MyBatis和Atomikos实现JTA分布式事务。 首先,让我们理解JTA的概念。Java Transaction API(JTA)是Java EE规范之一,用于处理分布式环境中的事务。它允许应用程序在不同的资源管理...
本项目"java+spring+mybatis+mysql+RuoYi-atomikos-实现分布式事务.zip"是一个基于若依(RuoYi)框架改造的多模块分布式事务解决方案,它利用了Atomikos这一强大的分布式事务管理器。以下将详细解析这个项目的知识点...
1. 引入依赖:在项目中添加Atomikos的JTA实现和Spring的事务管理依赖。 2. 配置Atomikos:创建Atomikos的配置文件,设置事务管理器的属性,如事务超时时间、日志存储路径等。 3. 配置Spring:在Spring的配置文件中...
本教程主要关注如何将Spring、SpringMVC、MyBatis和Atomikos这四个组件进行整合,以实现多数据源的分布式事务处理。 首先,Spring是Java领域广泛应用的依赖注入(DI)和面向切面编程(AOP)框架,它允许开发者轻松...
同时,你需要在MyBatis的配置中启用JTA事务管理,确保Spring和Atomikos能够协同工作。这样,当你的应用执行跨库操作时,Atomikos会自动管理这些操作,保证其在分布式环境下的原子性、一致性、隔离性和持久性。 综上...
本篇文章将深入探讨如何在Spring框架中结合Mybatis和Atomikos进行分布式事务管理的配置与集成。Atomikos是一款强大的开源事务处理系统,它支持JTA(Java Transaction API),可以为我们的应用程序提供分布式事务解决...
本教程将探讨如何利用Spring Boot、Druid、Mybatis以及Atomikos来配置多数据源并实现分布式事务。 首先,Spring Boot是Java生态系统中的一个流行框架,它简化了设置和配置过程,使得开发人员可以快速启动新项目。在...
在Spring框架中结合MyBatis,Atomikos可以实现分布式事务的高效处理。以下将详细介绍如何配置Spring、MyBatis以及Atomikos以实现这一目标。 首先,理解JTA的重要性。JTA是Java平台上的标准接口,用于处理跨多个...
本篇文档主要讲述如何使用Spring Boot结合MyBatis、JTA(Java Transaction API)以及Atomikos实现多数据源的事务管理。 ### Spring Boot框架 Spring Boot是Spring家族中的一个全新框架,用于简化新Spring应用的...
本案例主要探讨如何利用Spring Boot、Atomikos、JTA(Java Transaction API)、Hibernate以及MyBatis,结合MySQL数据库,实现一个跨数据源的分布式事务解决方案。 首先,Spring Boot是一个基于Spring框架的快速开发...
然后,Atomikos 是一个开源的 JTA(Java Transaction API)实现,它支持分布式事务管理。在分布式系统中,当多个微服务或组件涉及到跨数据库的操作时,Atomikos 能够确保这些操作要么全部成功,要么全部回滚,遵循 ...
本DEMO展示了如何使用Spring框架、Mybatis持久层框架以及Atomikos事务管理器来实现这一目标。以下是对这个DEMO中涉及的技术点的详细说明。 首先,Spring框架作为Java领域中最受欢迎的IoC(Inversion of Control)和...
本教程将详细讲解如何使用Spring Boot、Druid和Mybatis来实现JTA(Java Transaction API)分布式事务。这是一项高级技术,它允许在多数据库环境或者微服务架构中进行一致性的数据操作。 首先,让我们了解什么是JTA...
NULL 博文链接:https://lizhao6210-126-com.iteye.com/blog/1958831
7. **源码分析**:在"Spring+JTA+Mybatis源码"中,你可以深入理解以下内容: - 如何在Spring配置文件中设置JTA事务管理器。 - MyBatis是如何与JTA配合进行事务控制的,比如在XML映射文件或Mapper接口中定义的事务...
atomikos是一款开源的事务处理中间件,它实现了JTA(Java Transaction API)和JTS(Java Transaction Service),用于处理分布式事务。在多数据源环境下,atomikos能够保证跨数据源操作的一致性和原子性,确保事务的...
Spring框架,MyBatis持久层框架,以及Atomikos这样的分布式事务协调器共同工作,可以帮助我们实现复杂的多数据源事务处理。这个“spring、mybatis、atomikos实现多数据源事务demo”就是为了解决这一问题而设计的。 ...
在本项目中,我们主要探讨的是如何利用Spring Boot、MyBatis、Druid、Atomikos、WebSocket、Redis以及Swagger2构建一个具有多数据源、分布式事务管理,并且集成了实时通信与API文档管理功能的高级应用。下面将对这些...
本示例中的"spring、mybatis、atomikos实现DB2、Mysql多数据源事务demo"提供了一个实用的框架,演示了如何在Spring框架中结合MyBatis持久层框架以及Atomikos事务管理器来处理来自DB2和MySQL两个不同数据库的数据源...
本示例"spring3.0+struts2.0+mybatis3.2+jta+xapool配置文件"就是一个典型的Java企业级应用的集成框架,用于实现数据持久层、业务逻辑层以及控制层的整合。以下将详细介绍这些组件及其配置要点。 **Spring 3.0** 是...