- 浏览: 312334 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
zhou363667565:
看到你的这个配置 有个地方有点问题:
< aop:po ...
spring ibatis 事务配置 -
wo17796452:
[b][/b][i][/i][u][/u]引用[*][img] ...
crowd Jira confluence 集成 -
wo17796452:
<input type="button&quo ...
crowd Jira confluence 集成 -
benbear2008:
这些类图呢?
Spring MVC框架类图与顺序图 -
TTLtry:
谢了 最近学习spring时候 却总是登不上官方网站 很多 ...
Spring 2.5.5 api 帮助文档 chm格式 下载
对于不同的数据库存取需求,我们使用JDBC来解决这个问题,对于不同的数据连接来源需求,Spring则提供了DataSource注入,更换数据来源只要在Bean定义文件中修改配置,而不用修改任何一行程序。
因应不同的系统,应用程序可能使用不同的数据来源,但如纯綷的使用 JDBC、透过连接池、或是透过JNDI等等,数据来源的更动是底层的行为,不应影响到上层的业务逻辑,为此,您可以在需要取得连接来源的Bean上保留一个数据来源注入的接口,让依赖的数据来源由该接口注入。例如我们来写一个简单的Bean:
DataBean.java
package onlyfun.caterpillar;
import javax.sql.DataSource;
import java.sql.Connection;
public class DataBean {
private DataSource dataSource;
public void setDataSource(DataSource dataSource) {
this.dataSource = dataSource;
}
public void testDataSource() {
try {
Connection connection = dataSource.getConnection();
if(connection != null)
System.out.println("test ok!");
}
catch (Exception e) {
e.printStackTrace();
}
}
}
这是一个简单的测试Spring DataSource注入的程序,我们透过javax.sql.DataSource接口来注入数据来源,Spring提供了 org.springframework.jdbc.datasource.DriverManagerDataSource来取得 DataSource,它实作了javax.sql.DataSource,您将之当作一个Bean,之后再注入DataBean中即可,Bean定义档可以这么撰写:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/TestDB</value>
</property>
<property name="username">
<value>caterpillar</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>
<bean id="dataBean" class="onlyfun.caterpillar.DataBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
</beans>
如果您之前只使用spring-core.jar这个类别库,您还必须加入 spring-dao.jar, org.springframework.jdbc.datasource.DriverManagerDataSource是包括在这个类别库中,如果您使用的是spring.jar,当中已经包括了,无需加入任何的jar,当然,为了使用JDBC,您必须要有JDBC驱动程序的jar檔。
可以用下面这段程序简单的测试一下:
BeanDefinitionRegistry reg = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg);
reader.loadBeanDefinitions(new ClassPathResource("bean.xml"));;
BeanFactory bf = (BeanFactory) reg;
DataBean dataBean = (DataBean) bf.getBean("dataBean");
dataBean.testDataSource();
DriverManagerDataSource并没有提供连接池的功能,只能作作简单的单机连接测试,现在假设连接测试没有问题了,您想要换上DBCP以获得连接池的功能,则原程序不用更动,只要改改Bean定义档就可以了:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName">
<value>com.mysql.jdbc.Driver</value>
</property>
<property name="url">
<value>jdbc:mysql://localhost:3306/TestDB</value>
</property>
<property name="username">
<value>caterpillar</value>
</property>
<property name="password">
<value>123456</value>
</property>
</bean>
<bean id="dataBean" class="onlyfun.caterpillar.DataBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
</beans>
现在我们使用的是org.apache.commons.dbcp.BasicDataSource作为注入的 DataSource源,为了使用DBCP的功能,您必须要将commons-dbcp.jar加入CLASSPATH中,另外您还需要commons- pool.jar与commons-collections.jar,这些都可以在Spring的相依版本中的lib目录下找到。
注意到我们在dataSource Bean上宣告了destroy-method,如此可以确保BeanFactory在关闭时也一并关闭BasicDataSource。
如果您要直接使用JDBC来进行数据存储,使用org.springframework.jdbc.datasource.DataSourceUtils来取得Connection会是更好的方式:
Connection conn = DataSourceUtils.getConnection(dataSource);
这样作的好处是,所有的SQLException都被Spring的DataAccessException子类CannotGetJdbcConnectionException包装起来。您可以获得更多的信息,并保证存储层的可移值性。
关闭Connection时,可以用下面的方式:
DataSourceUtils.closeConnectionIfNecessry(connection, dataSource);
如果您的Servlet容器提供了JNDI资料源,您也可以简单的换上这个数据源:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE beans PUBLIC "-//SPRING/DTD BEAN/EN" "http://www.springframework.org/dtd/spring-beans.dtd">
<beans>
<bean id="dataSource" class="org.springframework.indi.JndiObjectFactoryBean">
<property name="jndiName">
<value>jdbc/TestDB</value>
</property>
</bean>
<bean id="dataBean" class="onlyfun.caterpillar.DataBean">
<property name="dataSource">
<ref bean="dataSource"/>
</property>
</bean>
</beans>
为了使用org.springframework.indi.JndiObjectFactoryBean,您必须加入 spring-context.jar这个类别库,jndiName实际上要根据您所设定的JNDI查询名称,您可以在下面这个网址找到有关于 Tomcat中JNDI设定的方式:
http://www.caterpillar.onlyfun.net/phpBB2/viewtopic.php?t=1354
发表评论
-
入门 21 - Controller的单元测试
2011-03-14 08:09 1134现在假设您要设 ... -
Spring MVC框架类图与顺序图
2011-03-14 08:08 4986藉由了解Spring的框架组成,我们可以了解框架之中的类与 ... -
Spring入门19 - ModelAndView类别
2011-03-14 08:07 1356入门 19 - ModelAndView类别 ... -
DispatcherServlet定义档
2011-03-14 08:07 886DispatcherServlet预设使用servlet名 ... -
入门 17 - 第一个Spring MVC Web程序
2011-03-14 08:06 1121进行这个程序之前,请您先完成入门 04 - 第一个Spri ... -
入门 16 - BeanFactoryPostProcessor接口
2011-03-14 08:05 1017撰写Bean定义档通常使用XML来撰写,XML阶层式的组织 ... -
入门 15 - Aware相关接口
2011-03-14 08:05 993Spring中提供一些Aware相关接口,像是BeanFa ... -
入门 14 - 资源文件的取得
2011-03-14 08:04 886首先来看看ApplicationContext接口的实作 ... -
入门 13 - MessageResource接口
2011-03-14 08:03 1131ApplicationContext继承了org.spri ... -
入门 12 - ApplicationContext接口
2011-03-14 08:03 919在Spring中,BeanFactory提供的是个比较API层 ... -
入门 10 - 集合对象注入
2011-03-14 08:01 826对于像数组、java.util.List、java. ... -
入门 09 - 属性参考与自动绑定
2011-03-14 08:00 874在定义Bean时,除了直接指定值给属性值之外,还可以直接参 ... -
入门 08 - 不使用XML定义档
2011-03-14 07:59 856XML档案的阶层格式非常适用于于组态设定,也因此几 ... -
入门 07 - Bean生命周期
2011-03-14 07:59 800在Spring中,从BeanFactory取得的实 ... -
入门 06 - Bean定义档进阶读取
2011-03-14 07:58 878BeanFactory可以接受InputStrea ... -
Constructor注入
2011-03-14 07:57 1054Spring鼓励的是setter injection,但也 ... -
第一个Spring程序
2011-03-14 07:57 881首先我们要先取得Sprin ... -
入门 03 - 依赖注入DI
2011-03-14 07:56 869IoC模式基本上是一个高层的概念,在Martin Fow ... -
控制反转IoC
2011-03-14 07:55 842IoC全名Inversion of Control,如果 ... -
简介 Spring
2011-03-14 07:54 787入门 01 - 简介 Spring Spring是轻量 ...
相关推荐
总结起来,ASP.NET数据库入门经典--C#编程篇主要涉及以下知识点:ADO.NET组件的使用,如SqlConnection、SqlCommand、SqlDataAdapter和DataSet;C#中与SQL Server的交互,包括建立连接、执行查询、事务处理;以及ASP...
ASP.NET提供了多种数据绑定机制,如DataSource控件和LINQ to SQL,使得可以将数据库数据直接绑定到Web页面上的控件,实现数据的显示和编辑。了解如何使用GridView、ListView等控件进行数据绑定,可以提升Web应用的...
我们可以使用`@Autowired`注入Repository实例,然后编写测试用例。例如: ```java @SpringBootTest public class UserRepositoryTest { @Autowired private UserRepository userRepository; @Test public void...
本资源为"ASP.NET 2.0入门经典--C#编程篇"的中文DOC版,适合初学者学习,虽然不包括英文PDF和配套源码,但仍能提供基本的理论知识和实践指导。 文档内容可能涵盖了以下几个主要知识点: 1. **ASP.NET基础**:介绍...
标题"mybatis学习-入门(2)-整合spring"暗示了这是一个关于如何将MyBatis与Spring进行集成的教程。在这个过程中,我们将探讨如何利用Spring的IoC容器来管理MyBatis的SqlSessionFactory和SqlSession对象,以及如何...
标题与描述均提到了“Struts2.0+Spring2.0+Hibernate3.0整合开发快速入门”,这表明文章旨在介绍如何将这三个框架整合在一起进行企业级Java应用的开发。接下来,我们将深入分析和解释这部分内容所涉及的关键知识点。...
- 使用`@Autowired`注入Mapper接口,Spring会自动处理Mapper的实例化和依赖注入。 - 配置Mapper扫描,Spring会自动加载所有的Mapper接口。 通过这个压缩包中的"smm"文件,你可以看到具体的代码实现,包括Spring...
通过这个入门项目,你将逐步理解Spring的核心机制,包括依赖注入、面向切面编程、数据库操作以及事务管理。这将为你后续深入学习Spring MVC、Spring Boot、Spring Data等高级特性和实践打下坚实的基础。记得结合项目...
本入门程序将引导你了解SpringBoot的核心特性和如何使用它来构建一个基础的Web应用,同时涵盖数据库操作和关键注解的使用。 1. **SpringBoot核心概念** - **自动配置**:SpringBoot通过`@EnableAutoConfiguration`...
这样,iBATIS可以融入到Spring的依赖注入和事务管理中,增强整个应用的灵活性和可维护性。 总结,iBATIS是一个强大的数据访问框架,通过SQL Maps和DAOs,使得数据库操作更加简洁,同时提供了动态SQL、事务管理和...
- 数据绑定:DataSource控件与数据绑定表达式 - 事件处理:事件触发和事件处理程序 第四天:ASP.NET MVC基础 - MVC模式介绍:模型、视图、控制器 - 创建第一个ASP.NET MVC项目 - 视图模板和视图数据 -路由系统:...
本教程“技术构建电子商务应用系统-从入门到提高”旨在引导读者深入理解和熟练掌握使用JSP来开发高效、可扩展的电商系统。以下是关于JSP及电子商务应用系统构建的关键知识点: 1. JSP基础: - JSP是一种服务器端...
### Spring Boot 入门详解 #### 一、Spring 发展历程与 Java 配置方式 Spring 是一个开源框架,最初由 Rod Johnson 创建,目的是为了简化企业级应用的开发。随着时间的发展,Spring 框架经历了多个重要的阶段: #...
在这个“一个SSH的入门完整例子”中,我们将深入探讨SSH框架的使用和配置。 首先,Struts是MVC(模型-视图-控制器)设计模式的一个实现,负责处理用户请求并展示响应。在Struts中,我们定义Action类来处理业务逻辑...
- **注入映射器**:通过`MapperFactoryBean`可以轻松地将数据映射器接口注入到任何Spring托管的Bean中。 - **自动配置**:对于某些情况,可以通过配置`MapperScannerConfigurer`来自动扫描和注册映射器接口。 #### ...