- 浏览: 3362560 次
- 性别:
- 来自: 珠海
文章分类
- 全部博客 (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 1146Spring Boot 属性配置和使用 http://blog ... -
Spring Boot 集成MyBatis
2016-06-24 10:55 1986Spring Boot 集成MyBatis http://bl ... -
Spring MVC防重复提交
2016-06-17 15:47 1588http://my.oschina.net/zyqjustin ... -
Spring容器加载完之后执行特定任务
2016-06-17 15:36 2241http://my.oschina.net/simpleton ... -
使用spring-session和shiro来代理session的配置
2016-06-16 11:21 11983使用spring-session和redis来代理sessio ... -
JSTL 的 if else : 有 c:if 没有 else 的处理
2016-06-14 09:52 1289http://blog.csdn.net/xiyuan1999 ... -
spring mvc 请求转发和重定向
2016-06-14 09:48 1349http://blog.csdn.net/jackpk/art ... -
mvc:view-controller
2016-05-18 10:26 1048http://blog.csdn.net/lzwglory/a ... -
spring配置事物的方式:注解和aop配置
2016-05-14 00:26 4057参考: Spring AOP中pointcut express ... -
分布式任务调度组件 Uncode-Schedule
2016-05-13 14:47 2238http://www.oschina.net/p/uncode ... -
写个mybatis的拦截插件,实现将所有执行的sql写入文件里
2016-05-12 15:59 5058原文 http://3131854.blog.51cto.co ... -
Mybatis分库分表扩展插件
2016-05-12 15:47 1586http://fangjialong.iteye.com/bl ... -
Spring中使用注解 @Scheduled执行定时任务
2016-05-10 09:39 1530原文:http://dwf07223.blog.51cto.c ... -
Spring中配置Websocket
2016-05-05 16:55 1239spring+websocket整合(springMVC+sp ... -
redis 集群中Session解决方案之Spring Session
2016-05-04 08:54 1270集群中Session解决方案之Spring Session h ... -
使用Spring-data进行Redis操作
2016-05-04 08:54 4731使用Spring-data进行Redis操作 http://z ... -
Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
2016-05-03 13:35 1028Spring4新特性——集成Bean Validation 1 ... -
SpringMVC介绍之Validation
2016-05-03 13:10 951SpringMVC介绍之Validation http://h ... -
spring 注解方式下使用commons-validator 验证表单
2016-05-03 11:08 3034原文: http://www.programgo.com/ar ... -
Spring MVC学习详解
2016-04-28 09:13 961原文 http://blog.csdn.net/alsocod ...
相关推荐
NULL 博文链接:https://injavawetrust.iteye.com/blog/2308552
本用例基于 Spring Boot + Druid + Mybatis 配置多数据源,并采用 JTA 实现分布式事务。
springboot+Atomikos+jpa+mysql的JTA分布式事务实现,本案例涉及到2个数据库,预期结果,在同一个事务中,两个库的状态一致
NULL 博文链接:https://lizhao6210-126-com.iteye.com/blog/1958831
NULL 博文链接:https://onlyor.iteye.com/blog/1483289
atomikos的jar包,我这里也发表了一份Spring3.2+mybatis3.0+atomikos的jta系统搭建的博客,喜欢的朋友也可以支持一下。
Spring多数据源分布式事务管理/springmvc+spring+atomikos[jta]+druid+mybatis
SpringBoot集成Atomikos使用Oracle数据库mybatisSpringBoot集成Atomikos使用Oracle数据库mybatisSpringBoot集成Atomikos使用Oracle数据库mybatisSpringBoot集成Atomikos使用Oracle数据库mybatis
JMay是什么JMay是一款基于Spring、SpringMVC、Mybatis、Atomikos集成框架,用于快速搭建跨数据库、分布式事务(XA规范)支持的Java web项目.JMay有哪些功能1.基于spring,如沐春风的体验;2.扩展Mybatis-Generator,...
:测试spring初始注解:@Async,覆盖串行线程池自定义线程池,无返回值纯初始化,有返回值Future,有返回值CompletableFuture :整合redis,7大数据类型:string,list,set,zset,hash,geo,hyperloglog :...
配置灵活,简单方便.JTA:atomikos. 分布式事务,多数据源事务全靠他.Cache:spring-cache. 统一接口,注解使用,simple,redis... 自动切换.Scheduler:quartz. 开源稳定,支持集群.自家:hsweb-commons :通用工具类hsweb-...