【Spring】Spring DataSourceTransactionManager

290 篇文章 448 订阅 ¥39.90 ¥99.00
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
MyBatis 目录(?)[-] mybatis实战教程mybatis in action之一开发环境搭建 mybatis实战教程mybatis in action之二以接口的方式编程 mybatis实战教程mybatis in action之三实现数据的增删改查 mybatis实战教程mybatis in action之四实现关联数据的查询 mybatis实战教程mybatis in action之五与spring3集成附源码 mybatis实战教程mybatis in action之六与Spring MVC 的集成 mybatis实战教程mybatis in action之七实现mybatis分页源码下载 mybatis实战教程mybatis in action之八mybatis 动态sql语句 mybatis实战教程mybatis in action之九mybatis 代码生成工具的使用 mybatis SqlSessionDaoSupport的使用附代码下载 转自:http://www.yihaomen.com/article/java/302.htm (读者注:其实这个应该叫做很基础的入门一下下,如果你看过Hibernate了那这个就非常的简单) (再加一条,其实大家可以看官方的教程更好些:http://mybatis.github.io/mybatis-3/,而且如果英文不是很好的那就看中文的:http://mybatis.github.io/mybatis-3/zh/sqlmap-xml.html) 写在这个系列前面的话: 以前曾经用过ibatis,这是mybatis的前身,当时在做项目时,感觉很不错,比hibernate灵活。性能也比hibernate好。而且也比较轻量级,因为当时在项目中,没来的及做很很多笔记。后来项目结束了,我也没写总结文档。已经过去好久了。但最近突然又对这个ORM 工具感兴趣。因为接下来自己的项目中很有可能采用这个ORM工具。所以在此重新温习了一下 mybatis, 因此就有了这个系列的 mybatis 教程. 什么是mybatis MyBatis是支持普通SQL查询,存储过程和高级映射的优秀持久层框架。MyBatis消除了几乎所有的JDBC代码和参数的手工设置以及结果集的检索。MyBatis使用简单的XML或注解用于配置和原始映射,将接口和Java的POJOs(Plan Old Java Objects,普通的Java对象)映射成数据库中的记录. orm工具的基本思想 无论是用过的hibernate,mybatis,你都可以法相他们有一个共同点: 1. 从配置文件(通常是XML配置文件中)得到 sessionfactory. 2. 由sessionfactory 产生 session 3. 在session 中完成对数据的增删改查和事务提交等. 4. 在用完之后关闭session 。 5. 在java 对象和 数据库之间有做mapping 的配置文件,也通常是xml 文件。 mybatis实战教程(mybatis in action)之一:开发环境搭建 mybatis 的开发环境搭建,选择: eclipse j2ee 版本,mysql 5.1 ,jdk 1.7,mybatis3.2.0.jar包。这些软件工具均可以到各自的官方网站上下载。 首先建立一个名字为 MyBaits 的 dynamic web project 1. 现阶段,你可以直接建立java 工程,但一般都是开发web项目,这个系列教程最后也是web的,所以一开始就建立web工程。 2. 将 mybatis-3.2.0-SNAPSHOT.jar,mysql-connector-java-5.1.22-bin.jar 拷贝到 web工程的lib目录. 3. 创建mysql 测试数据库和用户表,注意,这里采用的是 utf-8 编码 创建用户表,并插入一条测试数据 程序代码 程序代码 Create TABLE `user` ( `id` int(11) NOT NULL AUTO_INCREMENT, `userName` varchar(50) DEFAULT NULL, `userAge` int(11) DEFAULT NULL, `userAddress` varchar(200) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8; Insert INTO `user` VALUES ('1', 'summer', '100', 'shanghai,pudong'
Spring IOC 控制反转:把创建对象的权利交给Spring 创建对象 1.无参构造<bean class=""> 2.静态工厂<bean class="" factory-method=""> 3.实例工厂 <bean bean-factory="" factory-method=""> 管理对象 对象关系DI 构造器注入<construct-arg> set注入<property> 生命周期 scope:prototype/singleton init-method destroy-method API BeanFactory:使用这个工厂创建对象的方式都是懒加载,在调用的时候再创建 ClassPathXmlApplicationContext:使用这个工厂创建对象,他会根据scope智能判断是否懒加载,如果是单例则创建容器时就会创建里面bean的实例,如果是多例在获取使用时才会创建bean实例 FileSystemXmlApplicationContext磁盘路径 AnnotationConfigApplicationContext注解 WebApplicationContext:web环境使用的容器 注解 创建对象 Component:不分层的注解 Controller:web层 Service:service层 Repository:dao层 管理对象 注入 AutoWired Qualifier Resource Value 声明周期 Scope PostConstruct PreDestroy 新注解 Bean:写方法上,将方法的返回值 Configuration:标记配置类 ComponentScan包扫描 PropertySource:加载配置文件 Import:导入其他配置类 AOP 概念:面向切面编程,在不改变源码的情况下对方法进行增强,抽取横切关注点(日志处理,事务管理,安全检查,性能测试等等),使用AOP进行增强,使程序员只需要关注与业务逻辑编写. 专业术语 目标Target:需要增强的类 连接点JoinPoint:目标中可被增强的方法 切入点PointCut:被增强的方法 增强Advice:增强代码 切面Aspect:切点加通知 织入weaving:讲切面加载进内存形成代理对象的过程 代理Proxy 底层实现 JDK动态代理(默认) 基于接口:代理对象与目标对象是兄弟关系,目标类必须实现接口 CGLIB动态代理 基于父类:代理对象与目标对象是父子关系.目标不能被final修饰 修改默认代理方法:<aop:aspectj-autoproxy proxy-target-class="true"/> 增强种类 前置通知 后置通知 异常通知 最终通知 环绕通知 注意:使用注解的方式,最终通知和后置通知顺序换了,建议使用环绕通知 注解 配置 声明式事务管理 PlatFormTransactionManager:平台事务管理器:定义了commit/rollback Mybatis/jdbc:DataSourceTransactionManager Hibernater:HibernaterTransactionManager TransactionManagerDifinition 传播行为:A-->B,在B上声明是否一定需要事务管理 requerd:必须的(默认),如果A有事务那么就加入A的事务,如果A没有事务那么单独创建一个事务 supports,如果A有事务则加入,如果没有就算了 隔离级别 default:使用数据库默认的隔离级别(mysql:可重复读,oracle:读已提交) readuncommited:读未提交,不可以解决任何问题 readcommited:读已提交,可以解决脏读问题 repeatableRead:可重复读,可以解决脏读,不可重复读问题 Serializbler:串行化,可以解决所有问题 超时时间: 默认-1(永不超时),事务一直不提交也不回滚的时间 是否只读: 默认false TransactionManagerStatus: 事务的一些状态 整合 Spring整合Junit 1.导入依赖spring-test 2.加注解:RunWith、ContextConfiguration 3.注入对象进行测试 Spring整合web 1.导入依赖spring-web 2.配置ContextLoadListener 3.配置 <!--全局初始化参数--> <context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath:applicationContext.xml</param-value> </context-param> 4.在Servlet中使用WebApplicationContextUtils获取容器对象 5.使用容器对象去获取Service对象
### 回答1: 如果您使用Atomikos作为您的Spring Boot应用程序的事务管理器,并且在集成时遇到了“DataSourceTransactionManager not found”的错误消息,那么您需要采取以下步骤: 1. 确认您已经添加了Atomikos的相关依赖,包括Atomikos事务管理器和JTA实现库。例如: ``` <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jdbc</artifactId> <version>5.0.5</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jta</artifactId> <version>5.0.5</version> </dependency> ``` 2. 确认您在Spring Boot应用程序的配置文件中正确配置了Atomikos的数据源。例如: ``` spring.jta.atomikos.datasource.unique-resource-name=myDatasource spring.jta.atomikos.datasource.xa-data-source-class-name=com.mysql.cj.jdbc.MysqlXADataSource spring.jta.atomikos.datasource.xa-properties.url=jdbc:mysql://localhost:3306/mydb spring.jta.atomikos.datasource.xa-properties.user=root spring.jta.atomikos.datasource.xa-properties.password=myPassword ``` 3. 如果您使用的是Spring Boot 2.0及更高版本,请确保您的代码中没有手动创建`DataSourceTransactionManager` bean。从Spring Boot 2.0开始,该bean已经内置在框架中,不再需要手动创建。如果您手动创建了该bean,可以尝试将其删除以解决该问题。 希望这些步骤能够帮助您解决问题。如果问题仍然存在,请提供更多的上下文信息,我会尽力帮助您解决问题。 ### 回答2: 当使用Atomikos集成Spring Boot时,报出“DataSourceTransactionManager not found”的错误。这通常是由于以下原因所致: 1. 缺少Atomikos的依赖:在pom.xml文件中,确保已正确添加Atomikos的依赖。你可以在Maven中央存储库中找到Atomikos的正确版本,并将其添加到你的项目依赖中。 2. 缺少Spring的依赖:同时,还需要确保已经添加了Spring的相关依赖,包括spring-boot-starter,spring-boot-starter-jdbc等。这些依赖会提供必要的类和接口,以使Atomikos能够与Spring Boot无缝集成。 3. 配置错误:在spring boot的配置文件(通常是application.yml或application.properties)中,确保已正确配置数据库连接、事务管理器等相关属性。特别要注意是否指定了正确的事务管理器类,即Atomikos提供的DataSourceTransactionManager。 4. 包冲突:在某些情况下,可能会出现依赖包冲突的问题。这可能是由于使用了不同版本的依赖包,或者某些依赖冲突导致的。要解决这个问题,可以使用“mvn dependency:tree”命令来检查依赖关系,并尝试解决冲突。 总之,要解决“DataSourceTransactionManager not found”的问题,需要确保正确配置了Atomikos和Spring Boot的依赖,并正确配置了相关的属性和事务管理器类。还应该注意检查是否存在包冲突,并根据需要解决这些冲突。 ### 回答3: 当在Spring Boot中使用Atomikos进行事务管理时,如果出现"DataSourceTransactionManager not found"的错误提示,说明Spring容器无法找到Atomikos所提供的DataSourceTransactionManager类。 解决这个问题的方法是,首先要确保Atomikos的依赖已经正确地添加到项目的pom.xml文件中。确保以下的依赖已经添加: ```xml <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jta</artifactId> <version>5.0.6</version> </dependency> ``` 其次,需要在Spring Boot的配置文件中指定使用Atomikos作为事务管理器。在application.properties或application.yml文件中添加以下相关配置: ```properties spring.jta.enabled=true spring.jta.atomikos.connectionfactory.xa-properties.url=jdbc:mysql://localhost:3306/mydatabase spring.jta.atomikos.connectionfactory.xa-properties.user=myuser spring.jta.atomikos.connectionfactory.xa-properties.password=mypassword spring.jta.atomikos.pool.max-pool-size=10 ``` 在以上配置中,需要将数据库相关的URL、用户名和密码修改为实际的值,并根据需要调整连接池的最大连接数。 最后,在Spring配置类中配置Atomikos的事务管理器。可以创建一个类,使用`@Configuration`注解标记,然后通过`@Bean`注解将Atomikos的事务管理器注册到Spring容器中。示例代码如下: ```java @Configuration public class AtomikosTransactionManagerConfig { @Bean public UserTransactionManager userTransactionManager() { UserTransactionManager userTransactionManager = new UserTransactionManager(); userTransactionManager.setForceShutdown(true); return userTransactionManager; } @Bean public UserTransaction userTransaction() throws SystemException { UserTransactionImp userTransactionImp = new UserTransactionImp(); userTransactionImp.setTransactionTimeout(10000); return userTransactionImp; } @Bean public JtaTransactionManager jtaTransactionManager(UserTransactionManager userTransactionManager, UserTransaction userTransaction) { JtaTransactionManager jtaTransactionManager = new JtaTransactionManager(); jtaTransactionManager.setTransactionManager(userTransactionManager); jtaTransactionManager.setUserTransaction(userTransaction); return jtaTransactionManager; } } ``` 这样,配置好Atomikos的事务管理器后,重新启动应用程序,就不会再出现"DataSourceTransactionManager not found"的错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

九师兄

你的鼓励是我做大写作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值