`
234390216
  • 浏览: 10229618 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
博客专栏
A5ee55b9-a463-3d09-9c78-0c0cf33198cd
Oracle基础
浏览量:462454
Ad26f909-6440-35a9-b4e9-9aea825bd38e
springMVC介绍
浏览量:1775238
Ce363057-ae4d-3ee1-bb46-e7b51a722a4b
Mybatis简介
浏览量:1398154
Bdeb91ad-cf8a-3fe9-942a-3710073b4000
Spring整合JMS
浏览量:394944
5cbbde67-7cd5-313c-95c2-4185389601e7
Ehcache简介
浏览量:679873
Cc1c0708-ccc2-3d20-ba47-d40e04440682
Cas简介
浏览量:530764
51592fc3-854c-34f4-9eff-cb82d993ab3a
Spring Securi...
浏览量:1183536
23e1c30e-ef8c-3702-aa3c-e83277ffca91
Spring基础知识
浏览量:467426
4af1c81c-eb9d-365f-b759-07685a32156e
Spring Aop介绍
浏览量:151265
2f926891-9e7a-3ce2-a074-3acb2aaf2584
JAXB简介
浏览量:68010
社区版块
存档分类
最新评论

Spring Boot(16)——使用DataSource

阅读更多

使用DataSource

需要使用DataSource可以在pom.xml中添加spring-boot-starter-jdbc依赖,这会自动加入Spring Jdbc的依赖。还需要加入相应的JDBC驱动包的依赖,笔者这里使用的是MySQL的驱动。

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
</dependency>

DataSource的自动配置由org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration负责,当不存在DataSource类型的bean时,其会负责创建一个池化的DataSource。内置支持的连接池包括下面这几个,默认自动使用的顺序也是按照下面的顺序进行使用。即如果Classpath下存在HikariDataSource时将优先使用HikariDataSource,其次是Tomcat提供的数据库连接池,最后是dbcp2。

  • com.zaxxer.hikari.HikariDataSource
  • org.apache.tomcat.jdbc.pool.DataSource
  • org.apache.commons.dbcp2.BasicDataSource

当添加了spring-boot-starter-jdbc依赖时,会自动级联加入Hikari依赖,即此时默认将使用HikariDataSource。当Classpath下同时存在多个支持的数据库连接池实现时,如果不期望使用自动选择的数据库连接池实现,可以通过spring.datasource.type指定需要使用的数据库连接池实现。比如如果Classpath下同时存在com.zaxxer.hikari.HikariDataSourceorg.apache.tomcat.jdbc.pool.DataSource,默认将使用com.zaxxer.hikari.HikariDataSource,如果期望使用org.apache.tomcat.jdbc.pool.DataSource,则可以配置spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource

然后可以通过spring.datasource前缀开始的属性配置数据库连接相关的信息了,比如配置URL、驱动Class、用户名、密码等。数据库的配置信息由org.springframework.boot.autoconfigure.jdbc.DataSourceProperties负责接收。

spring.datasource.url=jdbc:mysql://localhost/test
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.datasource.username=root
spring.datasource.password=elim

更多的配置信息可以参考DataSourceProperties的API文档。

如果需要对使用的HikariDataSource连接池进行配置,可以通过spring.datasource.hikari前缀开始的属性进行配置,对应的配置属性将由com.zaxxer.hikari.HikariDataSource负责接收,可以配置的属性请参考对应的API文档。

如果需要对使用的Tomcat连接池进行配置,可以通过spring.datasource.tomcat前缀开始的属性进行配置,对应的配置属性将由org.apache.tomcat.jdbc.pool.DataSource负责接收,可以配置的属性请参考对应的API文档。

如果需要对使用的dbcp2连接池进行配置,可以通过spring.datasource.dbcp2前缀开始的属性进行配置,对应的配置属性将由org.apache.commons.dbcp2.BasicDataSource负责接收,可以配置的属性请参考对应的API文档。

有了DataSource后,就可以使用DataSource了,我们可以在需要应用它的地方直接进行注入,比如下面这样。

@Service
public class JdbcService {

    @Autowired
    private DataSource dataSource;
    
    public List<String> getUsers() throws Exception {
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        List<String> names = new ArrayList<>();
        try {
            connection = this.dataSource.getConnection();
            statement = connection.createStatement();
            resultSet = statement.executeQuery("select name from tb_user");
            while (resultSet.next()) {
                names.add(resultSet.getString(1));
            }
        } finally {
            if (resultSet != null) {
                resultSet.close();
            }
            if (statement != null) {
                statement.close();
            }
            if (connection != null) {
                connection.close();
            }
        }
        return names;
    }
    
}

现在的应用中基本都不会直接使用DataSource编程了,基本都是基于Hibernate、JPA或Mybatis编程。也有的会使用JdbcTemplate了。拥有了DataSource类型的bean后,Spring Boot的org.springframework.boot.autoconfigure.jdbc.JdbcTemplateAutoConfiguration将自动为我们配置JdbcTemplate bean,所以上述代码可以改写为如下这样。

@Service
public class JdbcService {

    @Autowired
    private JdbcTemplate jdbcTemplate;
    
    public List<String> getUsers() throws Exception {
        String sql = "select name from tb_user";
        List<String> names = this.jdbcTemplate.queryForList(sql, String.class);
        return names;
    }
    
}

可以使用spring.jdbc.template前缀开始的属性对JdbcTemplate进行一些自定义配置,对应的配置属性将由org.springframework.boot.autoconfigure.jdbc.JdbcProperties.Template负责接收,可以配置的属性请参考对应的API文档。

 

使用基于内嵌数据库的DataSource

Spring Boot支持对H2、HSQL和Derby三种内嵌的数据库进行自动配置,只要Classpath下存在它们相关的驱动Class,Spring Boot将自动配置对应的DataSource。基于内嵌数据库的自动配置的DataSource是不需要配置用户名、密码等数据库连接信息的。有了DataSource后就可以进行与DataSource相关的操作了,进行单元测试时使用内嵌的数据库是一个不错的选择。

 

使用基于JNDI的DataSource

如果需要使用基于JNDI的DataSource,则可以通过spring.datasource.jndi-name属性指定DataSource对应的JNDI名称。

spring.datasource.jndi-name=java:jboss/datasources/customers

(注:本文基于Spring Boot 2.0.3所写)

0
0
分享到:
评论

相关推荐

    spring boot整合JPA——demo

    本示例“spring boot整合JPA——demo”将演示如何在Spring Boot项目中配置和使用JPA。 首先,我们需要理解Spring Boot与JPA的关系。Spring Boot是基于Spring框架的快速开发工具,它通过自动化配置减少了常规设置...

    Spring-Boot-Demo

    首先,我们要理解Spring Boot的核心理念——约定优于配置。在Spring Boot项目中,我们不再需要手动编写大量的XML配置文件,而是通过自动配置类和starter模块来简化配置。对于Mybatis的整合,我们可以引入`spring-...

    Spring-Boot-demo

    《Spring Boot实战——基于mickjoust-boot-demo-master的深度解析》 Spring Boot以其简洁、快速的特性在Java开发领域中备受青睐,它通过“约定优于配置”的原则,极大地简化了Spring应用的初始搭建以及开发过程。本...

    spring-boot-demo

    例如,如果类路径下存在JDBC驱动,Spring Boot就会自动配置DataSource,使得我们可以直接使用JdbcTemplate或JPA进行数据库操作。 总的来说,"spring-boot-demo"项目是一个很好的学习平台,它让我们能亲身体验Spring...

    Spring Boot连接MySQL数据库

    首先,让我们了解Spring Boot的核心特性之一——自动配置。Spring Boot的自动配置功能允许我们在不编写大量XML配置文件的情况下,轻松地设置和管理应用的各种组件,包括数据源和JPA(Java Persistence API)。 要...

    Spring Boot 集成MyBatis简单教程

    2. **新建项目**:通过`File —— New —— Project`创建一个新的Spring Boot项目。 3. **使用Spring Initializr**:选择Spring Initializr作为项目的初始化工具。 4. **填写项目信息**: - **Group**:通常为公司...

    MyBatis与Spring整合——通过官方文档进行最简单的整合

    &lt;bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource"&gt; ;serverTimezone=UTC"/&gt; &lt;!-- 事务管理器 --&gt; &lt;bean id="transactionManager" class="org.spring...

    springboot搭建

    本教程将详细介绍如何使用 Spring Boot 搭建一个包含 Redis 缓存和 MyBatis 数据持久层的简单应用。 ### 一、Spring Boot 概述 Spring Boot 是由 Pivotal 团队提供的全新框架,旨在简化 Spring 应用的初始搭建以及...

    springboot-mybatis整合多数据源方式之一AOP法

    本文将详细讲解如何使用MyBatis和Spring Boot整合实现多数据源,并重点介绍一种方法——AOP(面向切面编程)法。这种方法允许我们在运行时动态地切换数据源。 首先,我们需要理解Spring Boot的自动配置特性。Spring...

    分库分表 各种mysql中间件 总结(csdn)————程序.pdf

    而`mybatis-spring-boot-starter`则是MyBatis与Spring Boot的集成,使得我们可以在Spring Boot应用中方便地使用MyBatis进行数据访问。 接下来,我们将关注ShardingSphere的配置。`spring.shardingsphere.datasource...

    SpringBootDemo

    本篇将深入探讨如何利用Spring Boot构建一个基于RESTful API的项目,同时结合MyBatis和MySQL数据库,实现一个完整的数据操作示例——SpringBootDemo。 一、Spring Boot基础知识 Spring Boot是由Pivotal团队提供的...

    Spring学习心得(二)——日志和数据库

    在本文中,我们将深入探讨这两个关键领域,并基于给出的"Spring学习心得(二)——日志和数据库"这个标题进行详细的阐述。 首先,让我们从日志开始。在Java应用程序中,日志系统扮演着调试、监控和问题排查的关键角色...

    SpringBoot知识点整理思维导图

    SpringBoot知识点整理思维导图是针对Java开发领域中流行的微服务框架——Spring Boot进行系统性梳理的工具。Spring Boot以其快速启动、简化配置的特点,深受开发者喜爱。在本思维导图中,主要涵盖了以下几个核心知识...

    MyBatis框架的学习(六)——MyBatis整合Spring

    你可以选择Apache的DBCP或C3P0等连接池实现,或者使用Spring Boot的自动配置。 3. **配置SqlSessionFactory**:MyBatis的核心对象是SqlSessionFactory,用于创建SqlSession。在Spring中,我们可以使用...

    各种数据源配置之Spring+JPA配置BoneCP数据源

    Spring JPA通过提供Repository接口简化了数据访问,同时支持多种数据源,包括HikariCP、C3P0和我们的主角——BoneCP。 配置Spring JPA与BoneCP的数据源,首先确保你已经下载了所需的Jar包。这些包通常包括Spring...

    spring-transaction-demo.rar_DEMO_springboot_wash1vw

    《Spring Boot事务管理实战教程——基于spring-transaction-demo项目》 在软件开发中,事务管理是确保数据一致性、完整性和可靠性的关键环节。本教程将以`spring-transaction-demo`项目为示例,深入探讨如何在...

    springboot 整合mybatis 亲测 非常简单就能用了

    在提供的描述中提到,可能使用到了MyBatis的扩展库——MyBatis Plus(BaTiSi)。MyBatis Plus提供了一些便捷的CRUD操作,可以减少开发者编写基础的SQL语句。例如,如果项目中包含`CURD_baomidou-master`这个文件,这...

    spring + spring mvc + hibernate 之零配置之路源代码

    例如,Spring Boot会自动发现`@Entity`注解的类,创建DataSource和SessionFactory,甚至配置JPA的事务管理器。开发者可以通过`@EnableJpaRepositories`开启JPA仓库的支持,`@EntityScan`指定实体类的位置,以及`@...

    springboot连接池、动态配置多数据源连接池,特别适合大数据部门、数据中台服务的多数据源连接池.zip

    本项目——"spring-boot-easy-connection-pool-master",主要探讨了如何在Spring Boot环境下配置和管理连接池,并且实现了动态配置多数据源的功能,这对于大数据部门和数据中台服务尤其重要。 首先,让我们深入理解...

Global site tag (gtag.js) - Google Analytics