Bean:
代码:
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可以这么写:
代码:
<?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。
如果您的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
分享到:
相关推荐
在Spring Boot框架中,`DataSource`的注入是应用程序与数据库交互的基础。`DataSource`是一个接口,通常由诸如HikariCP、Druid或Tomcat JDBC等实现提供,它负责存储和管理数据库连接,使得我们的应用能够高效且安全...
当需要数据库连接时,Spring会自动注入`DataSource`到需要它的组件中,通过`@Autowired`注解实现依赖注入。 ```java @Service public class UserService { @Autowired private DataSource dataSource; // 使用...
在Spring框架中,数据源(DataSource)是连接数据库的关键组件,它管理数据库连接的创建、分配和释放。DBCP(Basic Database Connection Pool)是Apache提供的一款开源的数据库连接池实现,它为Java应用提供了高效的...
spring.datasource.secondary.url=jdbc:mysql://localhost:3306/secondary_db spring.datasource.secondary.username=root spring.datasource.secondary.password=root spring.datasource.secondary.driver-class-...
Spring提供的这两个模板类简化了数据库操作,它们与DataSource结合使用,可以实现无侵入式的数据库访问,降低了SQL注入的风险。 通过阅读《学习Spring笔记_DataSource》这篇博文,可以深入理解Spring框架如何管理...
接着,我们创建一个实现了该接口的DAO类,并使用setter注入来注入DataSource: ```java @Service public class UserRepositoryImpl implements UserRepository { private DataSource dataSource; @Autowired ...
综上所述,Spring注入文件的写法涉及了数据源、Hibernate集成、事务管理和DAO的声明及配置。通过这种方式,Spring能够提供一个灵活且强大的基础设施,支持数据库操作和事务管理,同时保持代码的整洁和模块化。
在本篇【从零开始学Spring Boot】系列中,我们将探讨如何在Spring Boot项目中使用Druid数据源进行编程注入。Druid是一个优秀的数据库连接池,它提供了强大的监控和扩展功能,是许多企业级应用首选的数据源解决方案。...
Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口注入 接口注入是指通过接口...
`multiple-datasource-app.zip` 包含了一个利用Spring Boot和特定技术实现多数据源配置的示例。在这个项目中,主要涉及的关键技术是`AbstractRoutingDataSource` 和 AOP(面向切面编程)。 首先,`...
例如,如果你有一个名为"dataSource"的bean定义,并且你的另一个bean需要一个DataSource类型的属性,Spring可以通过byType自动装配,将"dataSource"注入到该属性中。这大大减少了手动配置的工作量。 接下来,我们...
3. **配置DataSource beans**:在Spring Boot应用中,你需要创建对应的`DataSource` bean,利用`@ConfigurationProperties`注解将配置文件中的属性注入到bean中。例如: ```java @Configuration public class ...
例如,通过`@Autowired`注解注入`DataSource`实例,然后进行数据库操作。 总结,Spring Boot结合Druid,能为你的Java项目带来高效稳定的数据库连接管理,同时提供丰富的监控功能,帮助开发者更好地理解和优化数据库...
<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"> ``` 二、多数据源配置 对于多个数据源的情况,Spring提供`AbstractRoutingDataSource`作为基础,它可以...
Spring Boot会自动扫描项目中的Mapper接口,并通过MyBatis-Spring将它们注入到需要的地方,无需手动配置。这样,你就可以在Service层直接注入Mapper接口并调用其方法执行SQL操作。 5. 性能优化 在实际项目中,可以...
在 Java 代码中,你可以使用 Spring 的 `@Configuration` 和 `@Bean` 注解来加载这些配置并创建 DataSource 实例,然后注入到 JdbcTemplate 中,以便在业务逻辑中使用: ```java @Configuration public class ...
Spring框架因其强大的依赖注入和AOP(面向切面编程)特性,成为Java领域首选的轻量级框架。Druid是一个优秀的数据库连接池组件,而AtomikosDataSource则是处理分布式事务的重要工具。下面我们将详细探讨如何利用...
4. **使用数据源**:在你的服务类或DAO类中,通过@Autowired注解注入DataSource,然后就可以使用JdbcTemplate或JPA进行数据库操作了。 通过以上步骤,你就能在Spring项目中成功集成并使用HikariCP作为数据库连接池...
这通常涉及到在业务逻辑中注入`DataSource`并调用其`determineCurrentLookupKey`方法。 5. **事务管理**:在多数据源环境下,事务管理也需要特殊处理。项目可能展示了如何配置`PlatformTransactionManager`来适配...