DataSource:一个工厂可以连接任意厂家的数据库。通常使用URL以及一些认证去建立数据库连接。

DataSource在代码中是一个对象,这个对象贯彻并落实了javax.sql.DataSource接口中注册JNDI服务,并且这个对象能发现并使用JNDI的名称。

DataSource可以用来获取:

a. 标志Connection对象;

b. 使用了连接池的connection;

c. 使用了事务及连接池的connection;

下面是DataSource的配置

SpringBoot中可以通过两种方式配置DataSource,一种是在Java代码中,一种是在properties文件中。DataSourceAutoConfiguration检测classpath下的DataSource.class或EmbeddedDatabaseType.class需要配置DataSource的bean。

maven中需要的配置:

以H2 db为例:

<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency><dependency><groupId>com.h2database</groupId><artifactId>h2</artifactId><version>2.4.1</version> <scope>runtime</scope>
</dependency>

application.properties中的配置

在application.properties可以直接配置DataSource,配置相关属性为spring.datasource.*。

这种配置方式不需要在程序中敲代码。

下面给出关于H2,MySQL,Oracle,SQL server相关的配置。

提示:driver-class-name不是必须的,SpringBoot会通过databases的url进行推算,得出其driver-class-name

# H2
spring.datasource.url=jdbc:h2:file:C:/temp/test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.driverClassName=org.h2.Driver
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect# MySQL
#spring.datasource.url=jdbc:mysql://localhost:3306/test
#spring.datasource.username=dbuser
#spring.datasource.password=dbpass
#spring.datasource.driver-class-name=com.mysql.jdbc.Driver
spring.jpa.database-platform=org.hibernate.dialect.MySQL5InnoDBDialect# Oracle
#spring.datasource.url=jdbc:oracle:thin:@localhost:1521:orcl
#spring.datasource.username=dbuser
#spring.datasource.password=dbpass
#spring.datasource.driver-class-name=oracle.jdbc.OracleDriver
#spring.jpa.database-platform=org.hibernate.dialect.Oracle10gDialect# SQL Server
#spring.datasource.url=jdbc:sqlserver://localhost;databaseName=springbootdb
#spring.datasource.username=dbuser
#spring.datasource.password=dbpass
#spring.datasource.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver
#spring.jpa.hibernate.dialect=org.hibernate.dialect.SQLServer2012Dialect

DataSource Bean

推荐使用DataSourceBuilder用于建立DataSource。代码如下:

@Configuration
public class JpaConfig {@Beanpublic DataSource getDataSource() {DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();dataSourceBuilder.driverClassName("org.h2.Driver");dataSourceBuilder.url("jdbc:h2:file:C:/temp/test");dataSourceBuilder.username("sa");dataSourceBuilder.password("");return dataSourceBuilder.build();}
}

JNDI DataSource

如果将SpringBoot部署成应用服务,可以通过使用应用服务的内置特性配置和管理数据源,并使用JNDI访问数据源。

如下:

#JBoss defined datasource using JNDIspring.datasource.jndi-name = java:jboss/datasources/testDB

Connection pooling

在配置文件中通过调整特定的前缀进行配置spring.datasource.hikari.*或spring.datasource.tomcat.*或spring.datasource.dbcp2.*

如下配置:

spring.datasource.dbcp2.initial-size = 50
spring.datasource.dbcp2.max-idle = 50
spring.datasource.dbcp2.default-query-timeout = 10000
spring.datasource.dbcp2.default-auto-commit = true...

SpringBoot配置Multiple DataSources

配置多个数据源,需要配置多个bean,其中一个要带上@Primary。这里要注意,如果自己配置数据源,那么自动配置将会停止。代码如下:

@Configuration
public class JpaConfig {@Bean(name = "h2DataSource")public DataSource h2DataSource() {DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();dataSourceBuilder.driverClassName("org.h2.Driver");dataSourceBuilder.url("jdbc:h2:file:C:/temp/test");dataSourceBuilder.username("sa");dataSourceBuilder.password("");return dataSourceBuilder.build();}@Bean(name = "mySqlDataSource")@Primarypublic DataSource mySqlDataSource() {DataSourceBuilder dataSourceBuilder = DataSourceBuilder.create();dataSourceBuilder.url("jdbc:mysql://localhost/testdb");dataSourceBuilder.username("dbuser");dataSourceBuilder.password("dbpass");return dataSourceBuilder.build();}
}

使用的时候带上@Qualifier

@Autowired
@Qualifier("h2DataSource")
DataSource dataSource;

Spring Boot文档阅读笔记-DataSource configuration相关推荐

  1. Spring Boot文档阅读笔记-EhCache的使用

    这里要先注意2个概念: buffer和cache,很多人会讲这两个概念混用.但其实这是两个概念! buffer:一般是指存储临时数据的实体.只能读写一次,对于程序员来说buffer是可见的,比如TCB ...

  2. Spring Boot文档阅读笔记-Spring Boot @Bean解析

    利用SpringBoot的@Bean创建一个简单的Bean. Spring的@Bean注解是放在方法上的,带上这个注解的方法会被Spring容器管理.并且这个方法要返回一个值(对象),这个值和对象会被 ...

  3. Spring Boot文档阅读笔记-对Securing a Web Application解析

    首先创建一个非安全的Web应用 这个应用包含两个页面,一个是home页面,一个是"Hello,World"页面.home页面使用Thymeleaf,相关代码如下: <!DOC ...

  4. Spring Boot文档阅读笔记-构建Restful风格的WebService客户端

    对应的maven如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  5. Spring Boot文档阅读笔记-构建Restful风格的WebService

    Maven代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...

  6. Spring Boot文档阅读笔记-构建SOAP的web Service服务

    这里使用的Maven,Java 8来操作的. Maven相关代码为: <dependencies><dependency><groupId>org.springfr ...

  7. Spring Boot文档阅读笔记-@SpringBootApplication官方解析与实例(1.5.19)

    目录 官方解析 博主例子 官方解析 @SpringBootApplication有如下3个特点: 1. @EnableAutoConfiguration: 能够启动Spring Boot的自动配置机制 ...

  8. Spring Boot文档阅读笔记-how-to-implement-2-way-ssl-using-spring-boot

    two-way-ssl需要12次握手(除去TCP的三次握手),如下图: 双向认证过程: 1.客户端发送ClientHello消息,告诉服务端要使用SSL. 2.客户端发送ServerHello的响应, ...

  9. Spring Boot文档阅读笔记-对Messaging with RabbitMQ解析

    此篇教程以Rabbitmq作为消息队列服务端,使用Spring Boot产生和发布消息. 使用Spring AMQP的RabbitTemplate发布消息,使用MessageListenerAdapt ...

最新文章

  1. PHP多台服务实现单点登录,如何在多台服务器上共享Session(PHP/JSP/ASP.NET)以及单点登录(SSO)...
  2. 数值比较器实现_电动开窗器、手动开窗器使用介绍
  3. Spring里Bean类的运行时小写之谜
  4. bluetooth射频已关闭请打开bluetooth射频_希杰大功率射频放大器烧了维修诊断步骤...
  5. 闲鱼推荐,让智能计算从云走向端
  6. iPhone手机更换自定义铃声
  7. 三维旋转矩阵_线性代数的本质(4)--矩阵乘法与复合变换
  8. BP神经网络预测matlab程序销售量预测
  9. Android 动画分类
  10. TkMybatis 是什么?
  11. 以VS2017+OpenCV3.4.7+opencv_contrib3.4.7 为例,用cmake编译,实现所有版本轻松编译,其他版本组合都可借鉴
  12. 匿名访问ftp服务器
  13. UE5 c++ 写一个livelink插件
  14. Pyside2 Qlabel如何快速添加click鼠标单击事件(新手上路,勿喷!)
  15. 计算机考试中如何设置表格外边框,Excel表格中怎么为单元格区域设置边框
  16. 贪心算法之贪心的加勒比海盗
  17. Qt 字体字号和字体像素关系
  18. STC89C52烧录不了
  19. windows电脑版便签工具用哪个?
  20. python代码实现技术指标: 转债正股的乖离率

热门文章

  1. android 05 桢布局:FrameLayout 网格布据 GridLayout
  2. IE 6 特有的条件注释详情
  3. 利用用户级线程提高多线程应用的性能
  4. http://bbs.winos.cn/viewthread.php?tid=1147extra=page=2
  5. 一张图剖析企业大数据平台的核心架构
  6. 这个工具秒杀市面上各种可视化,可惜90%的人都没用过!
  7. 果粉期待已久,iPhone 6s 或年底发布
  8. 【转】牛人杰作 管饭哥登场
  9. 在星辰世界的guandan
  10. A sample that using the completion port I/O model