`

spring 注入datasource

阅读更多

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

分享到:
评论

相关推荐

    SpringBoot框架Datasource注入

    在Spring Boot框架中,`DataSource`的注入是应用程序与数据库交互的基础。`DataSource`是一个接口,通常由诸如HikariCP、Druid或Tomcat JDBC等实现提供,它负责存储和管理数据库连接,使得我们的应用能够高效且安全...

    spring中dataSource的配置以及配合IOC的使用

    当需要数据库连接时,Spring会自动注入`DataSource`到需要它的组件中,通过`@Autowired`注解实现依赖注入。 ```java @Service public class UserService { @Autowired private DataSource dataSource; // 使用...

    spring配置datasource(dbcp方式)

    在Spring框架中,数据源(DataSource)是连接数据库的关键组件,它管理数据库连接的创建、分配和释放。DBCP(Basic Database Connection Pool)是Apache提供的一款开源的数据库连接池实现,它为Java应用提供了高效的...

    Spring Boot多数据源(JdbcTemplate)配置与使用

    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

    Spring提供的这两个模板类简化了数据库操作,它们与DataSource结合使用,可以实现无侵入式的数据库访问,降低了SQL注入的风险。 通过阅读《学习Spring笔记_DataSource》这篇博文,可以深入理解Spring框架如何管理...

    spring的setter注入实现mysql数据库的连接

    接着,我们创建一个实现了该接口的DAO类,并使用setter注入来注入DataSource: ```java @Service public class UserRepositoryImpl implements UserRepository { private DataSource dataSource; @Autowired ...

    spring注入文件写法

    综上所述,Spring注入文件的写法涉及了数据源、Hibernate集成、事务管理和DAO的声明及配置。通过这种方式,Spring能够提供一个灵活且强大的基础设施,支持数据库操作和事务管理,同时保持代码的整洁和模块化。

    16. Spring Boot使用Druid(编程注入)【从零开始学Spring Boot】

    在本篇【从零开始学Spring Boot】系列中,我们将探讨如何在Spring Boot项目中使用Druid数据源进行编程注入。Druid是一个优秀的数据库连接池,它提供了强大的监控和扩展功能,是许多企业级应用首选的数据源解决方案。...

    Spring 三种依赖注入方式.doc

    Spring 框架中提供了多种依赖注入方式,其中最常用的三种依赖注入方式分别是接口注入、设值注入和构造函数注入。下面,我们将分别对这三种依赖注入方式进行详细的介绍和分析。 一、接口注入 接口注入是指通过接口...

    multiple-datasource-app.zip

    `multiple-datasource-app.zip` 包含了一个利用Spring Boot和特定技术实现多数据源配置的示例。在这个项目中,主要涉及的关键技术是`AbstractRoutingDataSource` 和 AOP(面向切面编程)。 首先,`...

    第五章 Spring4 自动装配、方法注入

    例如,如果你有一个名为"dataSource"的bean定义,并且你的另一个bean需要一个DataSource类型的属性,Spring可以通过byType自动装配,将"dataSource"注入到该属性中。这大大减少了手动配置的工作量。 接下来,我们...

    springboot+mybatis多数据源配置下载

    3. **配置DataSource beans**:在Spring Boot应用中,你需要创建对应的`DataSource` bean,利用`@ConfigurationProperties`注解将配置文件中的属性注入到bean中。例如: ```java @Configuration public class ...

    spring-boot-druid

    例如,通过`@Autowired`注解注入`DataSource`实例,然后进行数据库操作。 总结,Spring Boot结合Druid,能为你的Java项目带来高效稳定的数据库连接管理,同时提供丰富的监控功能,帮助开发者更好地理解和优化数据库...

    Spring配置三种数据源及从属性文件中读取DB连接四要素

    &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt; ``` 二、多数据源配置 对于多个数据源的情况,Spring提供`AbstractRoutingDataSource`作为基础,它可以...

    spring-boot-starter-mybatis-spring-boot-1.0.2.zip

    Spring Boot会自动扫描项目中的Mapper接口,并通过MyBatis-Spring将它们注入到需要的地方,无需手动配置。这样,你就可以在Service层直接注入Mapper接口并调用其方法执行SQL操作。 5. 性能优化 在实际项目中,可以...

    jdbctemplate+druid连接池.docx

    在 Java 代码中,你可以使用 Spring 的 `@Configuration` 和 `@Bean` 注解来加载这些配置并创建 DataSource 实例,然后注入到 JdbcTemplate 中,以便在业务逻辑中使用: ```java @Configuration public class ...

    spring+druid+AtomikosDataSource实现多数据源切换及分布式事务控制

    Spring框架因其强大的依赖注入和AOP(面向切面编程)特性,成为Java领域首选的轻量级框架。Druid是一个优秀的数据库连接池组件,而AtomikosDataSource则是处理分布式事务的重要工具。下面我们将详细探讨如何利用...

    spring使用hikari所需jar包

    4. **使用数据源**:在你的服务类或DAO类中,通过@Autowired注解注入DataSource,然后就可以使用JdbcTemplate或JPA进行数据库操作了。 通过以上步骤,你就能在Spring项目中成功集成并使用HikariCP作为数据库连接池...

    spring+mybatis-plus集成

    Spring作为一款强大的轻量级框架,提供了依赖注入、AOP(面向切面编程)等功能,而MyBatis-Plus则是在MyBatis的基础上进行扩展,简化了常见的CRUD操作,提升了开发效率。下面我们将详细介绍如何将Spring与MyBatis-...

Global site tag (gtag.js) - Google Analytics