Spring Boot文档阅读笔记-DataSource configuration
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相关推荐
- Spring Boot文档阅读笔记-EhCache的使用
这里要先注意2个概念: buffer和cache,很多人会讲这两个概念混用.但其实这是两个概念! buffer:一般是指存储临时数据的实体.只能读写一次,对于程序员来说buffer是可见的,比如TCB ...
- Spring Boot文档阅读笔记-Spring Boot @Bean解析
利用SpringBoot的@Bean创建一个简单的Bean. Spring的@Bean注解是放在方法上的,带上这个注解的方法会被Spring容器管理.并且这个方法要返回一个值(对象),这个值和对象会被 ...
- Spring Boot文档阅读笔记-对Securing a Web Application解析
首先创建一个非安全的Web应用 这个应用包含两个页面,一个是home页面,一个是"Hello,World"页面.home页面使用Thymeleaf,相关代码如下: <!DOC ...
- Spring Boot文档阅读笔记-构建Restful风格的WebService客户端
对应的maven如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- Spring Boot文档阅读笔记-构建Restful风格的WebService
Maven代码如下: <?xml version="1.0" encoding="UTF-8"?> <project xmlns=" ...
- Spring Boot文档阅读笔记-构建SOAP的web Service服务
这里使用的Maven,Java 8来操作的. Maven相关代码为: <dependencies><dependency><groupId>org.springfr ...
- Spring Boot文档阅读笔记-@SpringBootApplication官方解析与实例(1.5.19)
目录 官方解析 博主例子 官方解析 @SpringBootApplication有如下3个特点: 1. @EnableAutoConfiguration: 能够启动Spring Boot的自动配置机制 ...
- Spring Boot文档阅读笔记-how-to-implement-2-way-ssl-using-spring-boot
two-way-ssl需要12次握手(除去TCP的三次握手),如下图: 双向认证过程: 1.客户端发送ClientHello消息,告诉服务端要使用SSL. 2.客户端发送ServerHello的响应, ...
- Spring Boot文档阅读笔记-对Messaging with RabbitMQ解析
此篇教程以Rabbitmq作为消息队列服务端,使用Spring Boot产生和发布消息. 使用Spring AMQP的RabbitTemplate发布消息,使用MessageListenerAdapt ...
最新文章
- PHP多台服务实现单点登录,如何在多台服务器上共享Session(PHP/JSP/ASP.NET)以及单点登录(SSO)...
- 数值比较器实现_电动开窗器、手动开窗器使用介绍
- Spring里Bean类的运行时小写之谜
- bluetooth射频已关闭请打开bluetooth射频_希杰大功率射频放大器烧了维修诊断步骤...
- 闲鱼推荐,让智能计算从云走向端
- iPhone手机更换自定义铃声
- 三维旋转矩阵_线性代数的本质(4)--矩阵乘法与复合变换
- BP神经网络预测matlab程序销售量预测
- Android 动画分类
- TkMybatis 是什么?
- 以VS2017+OpenCV3.4.7+opencv_contrib3.4.7 为例,用cmake编译,实现所有版本轻松编译,其他版本组合都可借鉴
- 匿名访问ftp服务器
- UE5 c++ 写一个livelink插件
- Pyside2 Qlabel如何快速添加click鼠标单击事件(新手上路,勿喷!)
- 计算机考试中如何设置表格外边框,Excel表格中怎么为单元格区域设置边框
- 贪心算法之贪心的加勒比海盗
- Qt 字体字号和字体像素关系
- STC89C52烧录不了
- windows电脑版便签工具用哪个?
- python代码实现技术指标: 转债正股的乖离率
热门文章
- android 05 桢布局:FrameLayout 网格布据 GridLayout
- IE 6 特有的条件注释详情
- 利用用户级线程提高多线程应用的性能
- http://bbs.winos.cn/viewthread.php?tid=1147extra=page=2
- 一张图剖析企业大数据平台的核心架构
- 这个工具秒杀市面上各种可视化,可惜90%的人都没用过!
- 果粉期待已久,iPhone 6s 或年底发布
- 【转】牛人杰作 管饭哥登场
- 在星辰世界的guandan
- A sample that using the completion port I/O model