- 浏览: 809082 次
- 性别:
- 来自: 西安
文章分类
- 全部博客 (307)
- struts (8)
- hibernate (3)
- spring (32)
- opensourceproject (12)
- javaScript (9)
- primeton EOS (2)
- journey of heart (10)
- Design pattern (6)
- ejb (17)
- point (37)
- Linux&Unix (22)
- ibatis (10)
- AJAX (6)
- DB (26)
- Protocol (6)
- chart (4)
- web server (11)
- webservice (7)
- integration (3)
- tuxedo (5)
- ext (4)
- android (1)
- c/c++ (12)
- JVM (1)
- paginationFrame (2)
- code (2)
- report (1)
- High-performance web (1)
- svn (1)
- JQuery (1)
- workDaily (2)
- cloud (16)
- Python (8)
- English (2)
- shell (5)
- googleCode (1)
- nio (1)
- hyper-v (1)
- debug (3)
- vbs (2)
- openstack (3)
- K8S (1)
- Mesos (0)
- Spark (0)
- Marathon (0)
最新评论
-
钱图大展:
chao2751021 写道lib包哪里去下载,找不到
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
钱图大展:
无法下载
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
fm395728572:
shell脚本中用到了环境变量,但是获取不到,例如脚本中有一句 ...
ganymed-ssh2 for Java -
liuhanjiang:
我qq147229234
大型网站用户行为记录的一个实现--基于clickStream(第一部分) -
liuhanjiang:
博主 我利用您提供的方法实现博文中介绍的clickstream ...
大型网站用户行为记录的一个实现--基于clickStream(第一部分)
采用基于XML方式配置事务
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <aop:config> <aop:pointcut id="transactionPointcut" expression="execution(* cn.itcast.service..*.*(..))"/> <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut"/> </aop:config> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED"/> <tx:method name="*"/> </tx:attributes> </tx:advice>
例子:我们使用xml配置的方式实现事务控制
步骤:1 .先写接口,再写实现,实现中去掉注解
package cn.com.xinli.service.impl; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import cn.com.xinli.bean.Person; import cn.com.xinli.service.PersonService; public class PersonServiceBean implements PersonService { public JdbcTemplate jdbcTemplate; public DataSource dataSource; public DataSource getDataSource() { return dataSource; } public void setDataSource(DataSource dataSource) { this.jdbcTemplate = new JdbcTemplate(dataSource); } public void delete(Integer personid) { jdbcTemplate.update("delete from person where id=?", new Object[]{personid}, new int[]{java.sql.Types.INTEGER}); } public Person getPerson(Integer personid) { return (Person)jdbcTemplate.queryForObject("select * from person where id=?", new Object[]{personid}, new int[]{java.sql.Types.INTEGER}, new PersonRowMapper()); } @SuppressWarnings("unchecked") public List<Person> getPersons() { return (List<Person>)jdbcTemplate.query("select * from person", new PersonRowMapper()); } public void save(Person person) { jdbcTemplate.update("insert into person(name) values(?)", new Object[]{person.getName()}, new int[]{java.sql.Types.VARCHAR}); } public void update(Person person) { jdbcTemplate.update("update person set name=? where id=?", new Object[]{person.getName(), person.getId()}, new int[]{java.sql.Types.VARCHAR, java.sql.Types.INTEGER}); } }
2.在beans.xml 中配置事务,也就是配置一个aop
<!-- 配置事务--> <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource"/> </bean> <!-- 配置事务管理器 (基于注解的事务需要此配置,基于xml配置事务应该去掉此配置) <tx:annotation-driven transaction-manager="txManager"/> --> <bean id="personService" class="cn.com.xinli.service.impl.PersonServiceBean"> <property name="dataSource" ref="dataSource"></property> </bean> <aop:config> <!-- 配置一个切面,和需要拦截的类和方法 --> <aop:pointcut id="transactionPointcut" expression="execution(* cn.com.xinli.service..*.*(..))"/> <!-- 引用一个事务通知 --> <aop:advisor advice-ref="txAdvice" pointcut-ref="transactionPointcut"/> </aop:config> <!-- 配置一个事务通知 --> <tx:advice id="txAdvice" transaction-manager="txManager"> <tx:attributes> <tx:method name="get*" read-only="true" propagation="NOT_SUPPORTED"/> <tx:method name="*"/> </tx:attributes> </tx:advice>3.在delete 方法中抛出一个 运行期例外 ,如果事务起作用,那么要删除的记录汇回滚。
public void delete(Integer personid) { jdbcTemplate.update("delete from person where id=?", new Object[]{personid}, new int[]{java.sql.Types.INTEGER}); throw new RuntimeException("我是例外"); }4.测试
public void testDelete() throws Exception{ personService.delete(5); }5结果
由于配置了事务,在业务方法中有 运行期例外,则事务回滚,并没有删除id 为5的记录,
在bean.xml中去掉事务的配置,在运行测试用例,发现id为5的记录已经被删除,可见xml配置事务起了作用,是要也是利用了aop,在拦截到方法的时候为方法加上事务
发表评论
-
hibernatetemplate类使用
2010-03-19 22:25 1204http://115893520.iteye.com/blog ... -
Spring 中的JdbcTemplate使用
2010-03-19 22:11 35091.JdbcTemplate的execute()方 ... -
SpringAOP 的使用(两种方式)
2009-10-22 13:42 1526使用Spring AOP 拦截 方法,给被拦截的 ... -
第30讲--Spring提供的CharacterEncoding和OpenSessionInView功能
2009-09-19 18:24 1798CharacterEncoding: 在web ... -
第29讲--为Spring集成的Hibernate配置二级缓存
2009-09-18 00:29 3402合理的使用缓存策略,往往在web开发中提高性能起到关键 ... -
第28讲--Struts与Spring集成方案2(Spring集成Struts)
2009-09-17 00:57 1646集成步骤: 1.和方案1一样需要在web. ... -
第27讲--Struts与Spring集成方案1(Struts集成Spring)
2009-09-16 08:25 1833Spring2.5+Hibernate3.3+Stru ... -
第25,26讲 --搭建和配置Spring与Hibernate整合的环境
2009-06-21 11:21 1610Spring2.5+Hibernate3.3+Stru ... -
第23讲 --使用Spring注解方式管理事务与传播行为详解
2009-06-11 23:19 2251事务传播属性 REQUIR ... -
第21,22讲 --搭建和配置Spring与jdbc整合的环境+Spring集成的jdbc编码和事务
2009-06-10 08:06 2702Spring+JDBC组合开发配置数据源有两种方式: ... -
第20讲--aspectj的切入点语法定义细节
2009-06-06 17:47 3643表达式分析: expression=" ... -
第19讲 --使用Spring配置文件实现AOP
2009-06-06 17:21 1549上面我们是使用注解的方式实现spring AOP的,下面 ... -
第18讲 --使用Spring的注解方式实现AOP的细节
2009-06-06 15:48 1567上一讲我们使用spring注解的方式理由aop技术 ... -
第17讲 --使用Spring的注解方式实现AOP入门
2009-06-05 00:48 2275使用Spring进行面向切面(AOP)编程 要 ... -
第16讲 --使用CGLIB实现AOP功能与AOP概念解释
2009-06-04 07:42 1641当代理对象没有实现 ... -
第15讲 --使用JDK中的Proxy技术实现AOP功能
2009-06-04 07:34 2336当目标类实现了接口,我们可以使用jdk的Proxy ... -
第14讲 --让Spring自动扫描和管理Bean
2009-06-02 23:40 8757通过在classpath自动扫描方式把组件纳入sp ... -
第13讲 --Autowire注解与自动装配
2009-06-02 22:46 31381. Autowire 默认是 ... -
第12讲 --编码剖析@Resource注解的实现原理
2009-06-01 23:14 3296在这一讲开始之前,我们先学习一下jdk5.0 中的一个新 ... -
第11讲 --用@Resource注解完成属性装配
2009-05-31 22:42 7045bean的注入方式有3种: 第一种:使用构造器注 ...
相关推荐
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.6.1. @Transactional 有关的设置 ...
第24次课-1 Spring与Hibernate的整合 本节主要内容 24.1 概述 24.2 管理SessionFactory 24.3 Spring对Hibernate的简化 24.1 概述 24.1.1 概述 Spring提供了很多IoC特性的支持,方便处理大部分典型的Hibernate整合...
2. **第二章:搭建Spring环境** - 安装与配置:介绍如何配置Java开发环境,包括JDK、IDE和构建工具如Maven或Gradle。 - 创建第一个Spring项目:逐步指导创建一个简单的Spring项目,体验Spring的基本配置。 3. **...
- 设置Spring库并创建第一个Spring应用,包括编写XML配置文件。 - 测试配置环境,确保Spring可以正确初始化和管理Bean。 3. **Spring管理Bean的原理** - 解释Bean的实例化过程,包括单例(Singleton)和原型...
8. 第二讲:可能是对Spring框架的初步介绍,包括项目结构、依赖管理和基本概念。 通过这些源码讲解,开发者可以更好地理解Spring的工作原理,学习如何调试和优化Spring应用,同时也能提升阅读和理解开源项目源码的...
#### 二十四、SpringSource Tool Suite(附录A) - **安装与配置**:指导如何安装和配置 SpringSource Tool Suite。 - **主要特性**:介绍 STS 的主要功能和特性。 - **开发技巧**:分享在使用 STS 进行开发时的...
2. **12.2 注解实现Bean依赖注入**:通过@Component、@Autowired等注解,可以省去XML配置文件,直接在类上声明Bean及其依赖。 3. **12.3 注解实现Bean定义**:使用@Configuration和@Bean注解,可以在Java类中定义和...
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 插入事务操作 9.5.8. ...
#### 第二章:Spring框架体系结构 - **核心容器(Core Container):** - 包括BeanFactory和ApplicationContext等核心接口和实现。这些接口负责对象的创建、装配以及生命周期管理。 - **数据访问集成(Data Access/...
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知...
9.5.1. 理解Spring的声明式事务管理实现 9.5.2. 第一个例子 9.5.3. 回滚 9.5.4. 为不同的bean配置不同的事务语义 9.5.5. <tx:advice/> 有关的设置 9.5.6. 使用 @Transactional 9.5.7. 事务传播 9.5.8. 通知...
通向架构师的道路(第二十天)万能框架Spring(二)Maven结合Spring与iBatis 本文档讲述了如何使用Maven结合Spring和iBatis来搭建SSI框架,解决了jar库无法管理、工程发布不方便、jar包占用空间过大、jar包冲突和...
#### 第二课:JDOM 的基本使用 - **简介**:JDOM 是 Java 文档对象模型 (Java Document Object Model),用于解析 XML 文件。 - **主要组件**: - `Document`:表示整个 XML 文档。 - `Element`:代表 XML 文档中的...
创建一个简单的Spring配置文件,定义一个bean,并在主程序中获取该bean的实例。 4. **注解方式创建对象** 使用@Component、@Service、@Controller等注解声明bean,并使用@Autowired注解自动装配依赖对象。 5. *...
【第四章】资源处理是指Spring如何加载和管理资源文件,比如配置文件等。4.1节介绍资源基础知识,4.2节探讨Spring内置的Resource实现,4.3节介绍如何访问这些资源,4.4节讲解Resource通配符路径的使用。 【第五章】...
第二十四章. 与Visual Studio.NET集成 24.1.XML编辑与验证 24.2.XML Schema的版本 24.3.集成API文档 第六部分. 快速入门程序 第二十五章. IoC快速入门 25.1.简介 25.2.Movie Finder 25.2.1.开始建立MovieFinder应用...
- **Spring配置文件**:XML文件中定义了bean的声明、属性等信息。 - **bean**:表示应用程序中的对象,在Spring容器中进行管理。 #### 5. 启用Log4j日志框架 - **配置文件**:在Spring配置文件中配置Log4j。 - **...
第十四章 内容管理系统 14.1 系统概述 14.2 需求分析 14.2.1 系统用例图 14.2.2 需求规格说明书 14.3 系统设计 14.3.1 设计视图层 14.3.2 设计持久层 14.3.3 设计业务逻辑层 14.3.4 设计控制层 14.4 架构设计和环境...