- 浏览: 1413498 次
- 性别:
- 来自: 南京
文章分类
最新评论
-
nakin1991:
[b][b][b][u][/u][/b][/b][/b]
Spring学习笔记(9)----让Spring自动扫描和管理Bean -
bishibaodian:
不要在这样找笔试题了,一次就这么几个,还没过瘾就没有了,去安装 ...
java笔试试题 -
长白LZ:
very good
周鸿祎在360新员工入职培训上的讲话 -
blacklong:
多谢楼主,哈哈~~
在线购物系统(J2EE 含源码) -
gergul:
没有效果。。而且有广告。
C#水波纹特效自定义控件
使用Spring+JDBC集成步骤如下:
*配置数据源,例如:
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="com.mysql.jdbc.Driver"/> <property name="url" value="jdbc:mysql://localhost:3306/test"/> <property name="username" value="root"/> <property name="password" value="123456"/> <!-- 连接池启动时的初始值 --> <property name="initialSize" value="1"/> <!-- 连接池的最大值 --> <property name="maxActive" value="100"/> <!-- 最大空闲值.当经过一个高峰时间后,连接池可以慢慢将已经用不到的连接慢慢释放一部分,一直减少到maxIdle为止 --> <property name="maxIdle" value="2"/> <!-- 最小空闲值.当空闲的连接数少于阀值时,连接池就会预申请去一些连接,以免洪峰来时来不及申请 --> <property name="minIdle" value="1"/> </bean>
*配置事务,配置事务时,需要在xml配置文件中引入用于声明事务的tx命名空间,事务的配置有两种方式:注解方式和基于XML配置的方式
下面演示下使用Spring注解方式管理事务
首先在配置文件中配置Spring提供的事务管理器
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 指定数据源 --> <property name="dataSource" ref="dataSource"/> </bean>
由于会使用注解方式,因此我们要打开注解处理器,对注解进行解析
<tx:annotation-driven transaction-manager="txManager"/>
这样我们的配置文件配置完成,下面我们在Mysql中建立一张表,
create table users ( id int(11) not null auto_increment, username varchar(20) not null, primary key (id) )
根据数据库,我们创建javabean
package com.szy.spring.bean; /** * @author coolszy * @time Dec 6, 2009 2:13:33 PM */ public class User { private int id; private String username; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } }
然后创建DAO接口,在DAO中提供几个方法:
package com.szy.spring.dao; import java.util.List; import com.szy.spring.bean.User; public interface UserDAO { public void save(User user); public void update(User user); Public User getUser(int id); public void delete(int id); public List<User> getAllUsers(); }
实现这个接口
package com.szy.spring.dao.impl; import java.util.List; import com.szy.spring.bean.User; import com.szy.spring.service.UserService; /** * @author coolszy * @time Dec 6, 2009 2:19:22 PM */ public class UserDAOImpl implements UserDAO { public void delete(int id) { } public List<User> getAllUsers() { return null; } public User getUser(int id) { } public void save(User user) { } public void update(User user) { } }
下面把这个类交给Spring管理
<bean id="userDAO" class="com.szy.spring.dao.impl.UserDAOImpl"/>
由于要通过数据源对表进行操作,因此在DAO中添加数据源。
private DataSource dataSource; public void setDataSource(DataSource dataSource) { this.dataSource = dataSource; }
然后在配置文件中进行配置
<bean id="userDAO" class="com.szy.spring.service.impl.UserDAOImpl"> <property name="dataSource" ref="dataSource"/> </bean>
这样我们就把数据源注入到类中。
在UserDAOImpl类中我们提供了dataSource,这样我们就可以对数据库进行操作,但是不推荐直接使用dataSource,建议使用JdbcTemplate
private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource dataSource) { //this.dataSource = dataSource; this.jdbcTemplate=new JdbcTemplate(dataSource); }
下面我们使用jdbcTemplate对数据库进行增删改查,详细代码见附件。
package com.szy.spring.dao.impl; import java.util.List; import javax.sql.DataSource; import org.springframework.jdbc.core.JdbcTemplate; import com.szy.spring.bean.User; import com.szy.spring.dao.UserDAO; /** * @author coolszy * @time Dec 6, 2009 2:19:22 PM */ public class UserDAOImpl implements UserDAO { //private DataSource dataSource; private JdbcTemplate jdbcTemplate; public void setDataSource(DataSource dataSource) { //this.dataSource = dataSource; this.jdbcTemplate=new JdbcTemplate(dataSource); } public void delete(int id) { jdbcTemplate.update("delete from users where id=?", new Object[]{id}, new int[]{java.sql.Types.INTEGER}); } public List<User> getAllUsers() { return (List<User>)jdbcTemplate.query("select * from users", new UserRowMapper()); } public User getUser(int id) { return (User)jdbcTemplate.queryForObject("select * from users where id=?", new Object[]{id}, new int[]{java.sql.Types.INTEGER}, new UserRowMapper()); } public void save(User user) { jdbcTemplate.update("insert into users(username) values(?)", new Object[]{user.getUsername()}, new int[]{java.sql.Types.VARCHAR}); } public void update(User user) { jdbcTemplate.update("update users set username=? where id=?", new Object[]{user.getUsername(),user.getId()}, new int[]{java.sql.Types.VARCHAR, java.sql.Types.INTEGER}); } }
编写测试代码,代码运行正常。
在我们实现的每个方法中如delete()方法,如果delete方法是这样
public void delete(int id) { jdbcTemplate.update("delete from users where id=?", new Object[]{id}, new int[]{java.sql.Types.INTEGER}); jdbcTemplate.update("delete from users where id=?", new Object[]{id}, new int[]{java.sql.Types.INTEGER}); }
这样每条语句都会在各自的事务中执行,并不能保证在同一使用中执行,为了保证在同一事务中执行,我们应使用Spring容器提供的声明事务,我们在UserDAOImpl 类上加入@Transactional,表示该类受Spring事务管理。如果该类中每个方法不需要事务管理,如getUser方法,则在该方法前加入
@Transactional(propagation=Propagation.NOT_SUPPORTED)
PS:在上面的配置文件中我们在配置文件中指明了驱动类等信息,如果我们想写在配置文件中要怎么配置能,首先我们编写配置文件,
driverClassName=com.mysql.jdbc.Driver url=jdbc\:mysql\://localhost\:3306/test username=root password=123456 initialSize=1 maxActive=100 maxIdle=2 minIdle=1
然后Spring的配置文件需进行如下配置:
<context:property-placeholder location="classpath:jdbc.properties"/> <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close"> <property name="driverClassName" value="${driverClassName}"/> <property name="url" value="${url}"/> <property name="username" value="${username}"/> <property name="password" value="${password}"/> <property name="initialSize" value="${initialSize}"/> <property name="maxActive" value="${maxActive}"/> <property name="maxIdle" value="${maxIdle}"/> <property name="minIdle" value="${minIdle}"/> </bean>
这样就可以从属性文件中读取到配置信息。
- 17_使用Spring注解方式管理事务.rar (5.2 MB)
- 下载次数: 90
发表评论
-
Spring学习笔记(18)----使用Spring配置文件实现事务管理
2009-12-06 18:36 2071由于我们要拦截UserDAOImpl中的方法,因此我们需要在配 ... -
Spring学习笔记(16)----使用Spring配置文件实现AOP
2009-12-04 22:14 1997前面介绍了使用注解的方式,下面介绍使用配置文件的方式实现AOP ... -
Spring学习笔记(15)----使用Spring的注解方式实现AOP
2009-12-03 21:48 2273下面介绍使用Spring框架进行AOP编程。 首先我们需要导 ... -
Spring学习笔记(14)----使用CGLIB实现AOP功能
2009-12-03 21:36 2904好久没学习spring了,今天接着学习。 接着这上面的例子, ... -
Spring学习笔记(13)----动态代理模式分析演示
2009-11-22 15:54 1929上一节演示的是静态代理模式,本节演示的是静态代理模式,既然是动 ... -
Spring学习笔记(12)----静态代理模式分析演示
2009-11-22 15:33 1797代理模式分为静态代理和动态代理。静态代理就是我们自己定义的代理 ... -
Spring学习笔记(11)----自定义属性编辑器
2009-11-21 14:57 2374前面我们所定义的属性都是几本的属性,如果我们定义一个属性是Da ... -
Spring学习笔记(10)----公共属性的注入配置
2009-11-20 09:01 2400假设我们定义了四个bean类,其代码分别如下: packag ... -
Spring学习笔记(9)----让Spring自动扫描和管理Bean
2009-11-18 11:14 4490package com.szy.spring.service; ... -
Spring学习笔记(8)----属性注入的方式
2009-11-17 18:14 2412Spring中属性注入的方式有三种: 1.使用属性sette ... -
Spring学习笔记(7)----装配各种集合类型的属性
2009-11-09 19:56 1895前面已经介绍了如何给属性注入对象,下面介绍一下如何装配集合类型 ... -
Spring学习笔记(6)----编码剖析Spring依赖注入的原理
2009-11-07 21:51 1536在Spring学习笔记(3)中剖析了Spring管理Bean的 ... -
Spring学习笔记(5)----依赖注入的简单实现
2009-11-04 22:06 2318Spring的核心机制是依赖注入。依赖注入让bean与bean ... -
Spring学习笔记(4)----Bean节点信息配置
2009-11-03 21:19 2389默认情况下,Spring的Ioc容器启动时会初始化bean,但 ... -
Spring学习笔记(3)----编码剖析Spring管理Bean的原理
2009-11-03 20:52 3402<?xml version="1.0" ... -
Sping学习笔记(2)----实例化Bean的三种方式
2009-11-02 22:03 2353Spring的实例化Bean有三种方式: 使用类构造器直接 ... -
Spring学习笔记(1)----简单的实例
2009-11-02 21:32 2735开始接触Spring了,写 ...
相关推荐
在本篇Spring学习笔记中,我们将深入探讨如何利用Spring框架的注解方式来实现面向切面编程(AOP)。AOP是一种编程范式,它允许我们定义横切关注点,如日志、事务管理等,然后将这些关注点模块化并插入到应用程序的多...
这份"Spring学习笔记+学习源码.zip"资源包含了深入学习Spring及其相关技术的知识点,以及实践代码,对提升Spring技能将大有裨益。 首先,我们来详细讨论Spring框架的主要组件和功能: 1. **依赖注入(Dependency ...
这篇"Spring学习笔记(18)----使用Spring配置文件实现事务管理"着重讲解如何通过Spring的XML配置来管理应用中的事务。这里我们将深入探讨相关知识点。 首先,Spring提供了两种事务管理方式:编程式事务管理和声明式...
在本篇 Spring 学习笔记中,我们将探讨 Spring 的入门、优点、组成以及重要的IOC理论。 1. **Spring 简介** Spring 是一个开源的、免费的 Java 框架,它的目标是减少企业级开发的复杂性。它集成了许多现有的技术,...
以上是 Spring 2.5.6 学习笔记中的关键知识点,通过这些基础知识的学习,开发者可以开始构建基于 Spring 框架的应用程序。接下来,可以进一步深入学习 Spring 的高级特性,如事务管理、安全性、Web 开发等方面的知识...
在本篇“Spring Hibernate 事务管理学习笔记(二)”中,我们将深入探讨Spring框架与Hibernate集成时如何实现高效、安全的事务管理。这是一篇关于源码分析和技术工具使用的文章,适合对Java开发和数据库操作有基础...
Spring提供了两种事务管理方式:编程式事务管理和声明式事务管理。编程式事务管理需要开发者显式地调用begin、commit、rollback等方法来控制事务,而声明式事务管理则更加便捷,它允许开发者通过配置或注解来声明...
### Spring学习笔记知识点详解 #### 一、Spring框架概述 **Spring** 是一个开源的、分层的企业级应用开发框架,旨在简化Java EE应用程序的开发。它的主要目标是提高开发效率,减少耦合度,并提供一种更为简洁的...
这个文档集合包括了Spring的API参考、用户指南、开发者笔记等,是学习和使用Spring 2.5 RC2的宝贵资源。 首先,让我们了解一下Spring的核心特性。2.5版本引入了一些重要的增强,如依赖注入(Dependency Injection,...
**JSF2整合Spring3——JSF学习笔记4** 在Java服务器端开发中,JavaServer Faces(JSF)和Spring框架都是重要的技术。JSF是一个用于构建用户界面的MVC(Model-View-Controller)框架,而Spring则是一个全面的企业级...
在本篇“spring学习笔记(十六)-声明式事务的例子”中,我们将深入探讨这一主题。 首先,声明式事务管理基于AOP(面向切面编程)实现,Spring通过代理模式在方法调用前后自动插入事务管理的代码。它主要通过两种方式...
### Spring Boot 学习笔记知识点总结 #### 一、Spring发展史 - **Spring1.x时代**:在Spring1.x的时代,主要通过XML文件来配置Bean。随着项目的规模扩大,XML配置文件的数量也随之增加,这导致开发人员需要频繁地...
本资料“Spring学习笔记&源码”是基于网易云课堂黑马程序员的Spring四天精通课程,旨在帮助学习者深入理解和实践Spring框架。 笔记部分可能会涵盖以下内容: 1. **Spring概述**:介绍Spring框架的历史、特点和主要...
### Spring学习笔记(最新版) #### 一、Spring框架简介 Spring框架是一个广泛使用的轻量级企业级应用框架,它提供了全面的解决方案来构建复杂的Java应用程序。Spring的核心特性包括依赖注入(Dependency Injection,...
在学习过程中,阅读博客如《spring hibernate 事务管理学习笔记(一)》是非常有益的,它通常会包含具体的示例代码和实践建议。你可以参考这个博客链接(https://microjava.iteye.com/blog/525973),结合实际项目,...
在Spring框架中,自动扫描和管理Bean是一种便捷的方式,它允许开发者无需显式配置每个Bean,而是通过指定包路径来让Spring自动发现和管理Bean。本文将深入探讨这个主题,帮助你更好地理解和应用这一功能。 首先,让...
这份"Spring框架学习笔记"涵盖了Spring框架的基础知识、核心组件以及高级特性,对于初学者来说是一份宝贵的资料。 一、Spring框架概述 Spring框架是为了解决企业应用开发的复杂性而设计的,它提供了一个全面的基础...
5. **YAML与Properties配置**:Spring Boot支持使用YAML或Properties格式的配置文件,YAML格式更加直观易读,同时提供了命令行参数、环境变量、配置文件等多种方式来管理应用配置。 6. **Spring Boot CLI**:命令行...
本篇学习笔记主要探讨了Spring中的属性注入方式,包括了传统的XML配置注入、注解式注入以及使用Java配置类的方式。 一、XML配置注入 在Spring早期版本中,XML配置文件是定义Bean及其依赖关系的主要方式。属性注入...