一、spring配置c3p0连接池:

1、导入maven依赖:

<!-- https://mvnrepository.com/artifact/com.mchange/c3p0 -->
<dependency><groupId>com.mchange</groupId><artifactId>c3p0</artifactId><version>0.9.5.2</version>
</dependency>

2、在spring配置文件中配置连接池:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"><!-- spring配置c3p0连接池 start --><!-- 1.配置连接池 --><!-- 1.1创建连接池对象,dataSource的名字不能改变 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!-- 1.2设置连接池的属性 --><property name="driverClass" value="com.mysql/jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql:///test-ssm"></property><property name="user" value="root"></property><property name="password" value="admin"></property></bean><!-- 2.创建jdbcTemplate对象,并注入连接池对象 --><bean id="jdbctemplate" class="org.springframework.jdbc.core.JdbcTemplate"><property name="dataSource" ref="dataSource"></property></bean><!-- 3.创建userDao对象,并注入jdbctemplate对象 --><bean id="userDao" class="com.zwp.dao.UserDao"><property name="jdbcTemplate" ref="jdbctemplate"></property></bean><!-- 4.创建userService对象,并注入userDao对象 --><bean id="userService" class="com.zwp.service.UserService"><property name="userDao" ref="userDao"></property></bean><!-- spring配置c3p0连接池 end -->
</beans>

3、相关类的代码:

public class UserDao {private JdbcTemplate jdbcTemplate;public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {this.jdbcTemplate = jdbcTemplate;}public void add(){System.out.println("UserDao调用JdbcTemplate..");String sql="insert into user values(?,?)";jdbcTemplate.update(sql,"小张","666");}
}
public class UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void add(){System.out.println("service调用dao...");userDao.add();}
}

4、测试类:

public class Test2 {@Testpublic void test6(){ApplicationContext context=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");UserService userService = (UserService) context.getBean("userService");System.out.println("调用service...");userService.add();}
}

5、运行结果:

二、spring的声明式事务管理:

spring的声明式事务管理有两种实现:

(1)基于xml配置文件的实现;

(2)基于注解方式的实现;

1、基于xml配置文件实现:

步骤:第一步:配置连接池;

第二步:配置事务管理器;

第三步:配置事务增强;

第四步:配置切面;

spring配置文件配置如下:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"><!-- 声明式事务管理-基于xml配置文件实现start --><!-- 1.配置连接池 --><!-- 1.1创建连接池对象 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!-- 1.2设置连接池的属性 --><property name="driverClass" value="com.mysql/jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql:///test-ssm"></property><property name="user" value="root"></property><property name="password" value="admin"></property></bean><!-- 5.配置事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 6.配置事务增强 --><tx:advice id="txadvice" transaction-manager="transactionManager"><!-- 6.1 做事务操作 --><tx:attributes><!-- 6.2 设置进行事务操作的方法匹配规则 --><tx:method name="account" propagation="REQUIRED"/></tx:attributes></tx:advice><!-- 7.配置切面 --><aop:config><!-- 7.1 配置切入点 --><aop:pointcut expression="execution(* com.zwp.service.UserService.*(..))" id="pointcut1"/><!-- 7.2 配置切面 --><aop:advisor advice-ref="txadvice" pointcut-ref="pointcut1"/></aop:config> <!-- 声明式事务管理-基于xml配置文件实现end -->
</beans>
public class UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void account(){//小明增加1000userDao.increase();//出现异常:int i=10/0;//小李减少1000userDao.decrease();}
}
public class Test2 {@Testpublic void test6(){ApplicationContext context=new ClassPathXmlApplicationContext("classpath:spring/applicationContext.xml");UserService userService = (UserService) context.getBean("userService");System.out.println("调用service...");userService.account();;}
}

运行结果:在执行account()方法是,出现异常,但是发生异常前的数据库操作没有被保存到数据库,说明配置成功了。

2、基于注解方式的实现:

步骤:第一步:配置连接池;

第二步:配置事务管理器;

第三步:开启事务注解;

第四步:在要使用事务的方法所在类上面添加注解@Transactional。

spring配置文件配置如下:

<beans xmlns="http://www.springframework.org/schema/beans"xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p"xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsdhttp://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd"><!-- spring配置c3p0连接池 start --><!-- 1.配置连接池 --><!-- 1.1创建连接池对象 --><bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"><!-- 1.2设置连接池的属性 --><property name="driverClass" value="com.mysql/jdbc.Driver"></property><property name="jdbcUrl" value="jdbc:mysql:///test-ssm"></property><property name="user" value="root"></property><property name="password" value="admin"></property></bean><!-- spring配置c3p0连接池 end --><!-- 5.配置事务管理器 --><bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"></property></bean><!-- 开启事务注解 --><tx:annotation-driven transaction-manager="transactionManager"/></beans>
//第四步:在要使用事务的方法所在类上面添加注解@Transactional
@Transactional
public class UserService {private UserDao userDao;public void setUserDao(UserDao userDao) {this.userDao = userDao;}public void account(){//小明增加1000userDao.increase();//出现异常:int i=10/0;//小李减少1000userDao.decrease();}
}

spring配置c3p0连接池、spring的声明式事务管理相关推荐

  1. Spring框架(下)JdbcTemplate、声明式事务管理

    Spring框架(下)JdbcTemplate.声明式事务管理 (一)使用JdbcTemplate 1.概述 为了使JDBC更加易于使用,Spring在JDBC API上定义了一个抽象层,以此建立一个 ...

  2. Spring Framework--Data Access(1)--Transaction Management(2) - 声明式事务管理

    一.概述 Spring的声明式事务管理是通过Spring的AOP实现的,Spring的事务管理和EJB CMT类似,都可以在方法级别上定义事务行为,不过他们两者也有区别,表现在: (1)EJB CMT ...

  3. 解决spring配置c3p0连接池,tomcat无法正常启动

    为什么80%的码农都做不了架构师?>>>    今天下午收到一名网友的在线求助.先简要描述一下问题的背景: Windows平台,tomcat应用服务器, Oracle数据库,应用架构 ...

  4. 全面分析 Spring 的编程式事务管理及声明式事务管理(转)

    摘要 Spring 的事务管理是 Spring 框架中一个比较重要的知识点,该知识点本身并不复杂,只是由于其比较灵活,导致初学者很难把握.本教程从基础知识开始,详细分析了 Spring 事务管理的使用 ...

  5. 全面分析 Spring 的编程式事务管理及声明式事务管理--转

    开始之前 关于本教程 本教程将深入讲解 Spring 简单而强大的事务管理功能,包括编程式事务和声明式事务.通过对本教程的学习,您将能够理解 Spring 事务管理的本质,并灵活运用之. 先决条件 本 ...

  6. Spring+Hibernate+c3p0连接池配置-连接无法释放的问题解决方案

     1.Spring+Hibernate+c3p0连接池配置: <?xml version="1.0" encoding="UTF-8"?> < ...

  7. spring 整合c3p0连接池

    个人博客:https://suveng.github.io/blog/​​​​​​​ Spring 整合C3P0连接池 注意:环境 jdk1.8 ,idea 2018,maven,spring环境 代 ...

  8. spring事物配置,声明式事务管理和基于@Transactional注解的使用

    事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring支持编程式事务管理和声明式事务管理两种方式. 编程式事务管理使用TransactionTemplate或 ...

  9. spring事务配置,声明式事务管理和基于@Transactional注解的使用

    事务管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性. spring提供了几个关于事务处理的类: TransactionDefinition //事务属性定义 Transc ...

最新文章

  1. 1.2 检测和测量图像中的圆形目标
  2. gSoap的“error LNK2001: 无法解析的外部符号 _namespaces”解决方法
  3. SAP Business Application Studio和SAP云平台Destination
  4. HDU2067 小兔的棋盘
  5. 信号扫描_图文并茂,一文读懂信号源
  6. AtCoder SoundHound Inc. Programming Contest 2018 E + Graph (soundhound2018_summer_qual_e)
  7. linux安装之后缺少命令,Centos 7 最小安装后关键命令找不到 ifconfig等
  8. 软件设计师学习3——操作系统知识
  9. 御剑仙侠服务器维护,御剑修仙放置挂机文字游戏
  10. Flash 第七章 元件,帧,库管理
  11. 系统辨识与自适应控制matlab仿真下载,系统辨识与自适应控制MATLAB仿真 全部程序...
  12. 单个文件如何修改MD5
  13. windows设置定时任务并运行python脚本(windows任务计划)
  14. java中的正则表达式_java中的正则表达式
  15. JavaScript系列-闭包
  16. 数字人民币红包体验如何?
  17. 关于领域驱动设计(DDD)的理论知识
  18. r语言员工离职_使用R机器学习进行员工离职预测系列(一)
  19. html自动全屏js,js实现简单页面全屏
  20. 【Linux】一步一步学Linux——Linux系统目录详解(09)

热门文章

  1. 四十八、使用Python和Stata完成广西碳酸钙企业的主成分分析和因子分析
  2. 【webpack 中版本兼容性问题错误总结,耽误半天学习】
  3. 6.29 Vue 第二天 学习笔记
  4. 三连冠!百度PARL 拿下NeurIPS 2020电网调度竞赛双赛道冠军
  5. CVPR 2019 | 旷视研究院提出极轻量级年龄估计模型C3AE
  6. 关于大家对Swin Transformer的魔改论文模型记录(只关注Swin是如何使用的)
  7. isulad代替docker_云原生时代的华为新“引擎”:iSula | Linux 中国
  8. 【Linux部署】Greenplum数据库6.13.0单机版【重启实录】(5次报错问题及解决的避坑指南+日志文件查看方法)
  9. opengl游戏引擎源码_跨平台渲染引擎之路:拨云见日
  10. vue 初始化方法_Vue源码解读(一)引入Vue做了什么