1.什么是数据源?
数据源是连接到数据库的一类路径,它包含了访问数据库的信息(地址、用户名、密码)。
拓展:
数据库 数据库是一个容器,包含了很多数据,当然这些数据可能存在不同的小容器(表)里面。 若用水来形容数据,数据库就是水库。 数据源 数据源是连接到数据库的一类路径,它包含了访问数据库的信息(地址、用户名、密码)。 数据源就像是排水管道。 数据库连接 数据库连接是根据数据源产生的实际连接上数据库的路径。 数据库连接就像是管道里面的水管,这些水管都按照管道(数据源)的配置访问数据库。当打开了数据连接的时候,就像是打开了水管一样。 数据库连接池 每个数据源可能会配置数据库连接池,就像是排水管道的自动化系统。 数据库连接池的作用就是维护数据库连接,减少创建和删除数据库连接的操作,来达到减少数据访问时耗的目的。 https://blog.csdn.net/_/article/details/
讯享网
Springboot默认支持4种数据源类型
讯享网 1. org.apache.tomcat.jdbc.pool.DataSource 2. com.zaxxer.hikari.HikariDataSource 3. org.apache.commons.dbcp.BasicDataSource 4. org.apache.commons.dbcp2.BasicDataSource /* 以上四种数据源都定义在 org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration中 */
DataSourceAutoConfiguration的自动加载
对于以上4种数据源,Springboot 启动时会自动加载org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration类 , 通过自动配置为其生成DataSource Bean,DataSource Bean默认只会生成一个。
四种数据源类型的生效先后顺序如下:
讯享网 Tomcat-JDBC--> Hikari --> Dbcp --> Dbcp2
新建springboot项目若未配置数据源的spring.datasource.url属性,启动项目时会报错,可通过配置或者在主程序类排除数据源自动配置类
//exclude 排除数据源自动配置类使其不自动加载 //但这种方式属于掩耳盗铃,虽然不报错了,但不加载数据源也就肯定不能链接数据库 @SpringBootApplication(exclude = DataSourceAutoConfiguration.class) public class testApplication {
public static void main(String[] args) {
SpringApplication.run(testApplication.class, args); } }
2.1如何在一个springboot项目中配置数据源?
以JDBC数据源为例
1.pom文件中添加依赖
讯享网 <dependencies> <!-- 添加MySQL依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 添加JDBC依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> </dependencies>
2.配置文件中添加配置
# application.properties文件中添加如下配置: spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=
yml文件一样,换换格式
讯享网# application.yml文件中添加如下配置: spring: datasource: url: jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 driverClassName: com.mysql.jdbc.Driver username: root password:
2.2 如何切换默认数据源?
四种默认数据源依赖如下:
<!-- 添加Tomcat-JDBC依赖 --> <dependency> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> </dependency> <!-- 添加HikariCP依赖 --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </dependency> <!-- 添加DBCP依赖 --> <dependency> <groupId>commons-dbcp</groupId> <artifactId>commons-dbcp</artifactId> </dependency> <!-- 添加DBCP2依赖 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-dbcp2</artifactId> </dependency>
在四种默认数据源中切换有两种方式
1.排除其他的数据源依赖项,仅保留需要的数据源依赖
假设我们要切换成HikariCP数据源。
讯享网由于Tomcat-JDBC数据源优先级比HikariCP高, 且在引入spring-boot-start-jdbc依赖时,里面其实就已经包含了 Tomcat-JDBC 的依赖, 因此若想要切换为HikariCP数据源,就需要先将已引入的Tomcat-JDBC 依赖排除掉, 再添加上需要的HikariCP数据源依赖。
依赖配置如下:
<!-- 添加JDBC依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> <exclusions> <!-- 排除Tomcat-JDBC依赖 --> <exclusion> <groupId>org.apache.tomcat</groupId> <artifactId>tomcat-jdbc</artifactId> </exclusion> </exclusions> </dependency> <!-- 添加HikariCP依赖 --> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> </dependency>
2.通过在核心配置中通过spring.datasource.type属性指定数据源的类型
讯享网# 在核心配置中通过添加spring.datasource.type = [数据源类型] 来指定数据源的类型; spring.datasource.type=com.zaxxer.hikari.HikariDataSource # spring.datasource.type=org.apache.tomcat.jdbc.pool.DataSource # spring.datasource.type=org.apache.commons.dbcp.BasicDataSource # spring.datasource.type=org.apache.commons.dbcp2.BasicDataSource
2.3 如何使用第三方数据源?
若不想使用Springboot默认支持的4种数据源,还可以选择使用其他第三方的数据源,eg:Druid、c3p0等。
以使用Druid数据源为例。
1.pom文件中添加依赖
<groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.4.1.RELEASE</version> </parent> <dependencies> <!-- 添加MySQL依赖 --> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <!-- 添加JDBC依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId> </dependency> <!-- 添加Druid依赖 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.6</version> </dependency> </dependencies>
2.配置文件中添加配置
讯享网# application.properties文件中添加如下配置: spring.datasource.url=jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=utf8 spring.datasource.driverClassName=com.mysql.jdbc.Driver spring.datasource.username=root spring.datasource.password=
3.定义数据源
//使用注解@Bean 创建一个DataSource Bean并将其纳入到Spring容器中进行管理即可 @Configuration public class DataSourceConfig {
//在核心配置文件中指定url、username、passward等属性的值 @Autowired private Environment env; @Bean public DataSource getDataSource() {
DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(env.getProperty("spring.datasource.url")); dataSource.setUsername(env.getProperty("spring.datasource.username")); dataSource.setPassword(env.getProperty("spring.datasource.password")); return dataSource; } }
或者:
讯享网@Data @Configuration //在核心配置文件中指定url、username、passward等属性的值 @ConfigurationProperties(prefix = "spring.datasource") public class DataSource2Config {
private String url; private String username; private String password; @Bean public DataSource getDataSource() {
DruidDataSource dataSource = new DruidDataSource(); dataSource.setUrl(url); dataSource.setUsername(username); dataSource.setPassword(password); return dataSource; } }
或者:
@Bean @ConfigurationProperties(prefix = "spring.datasource") public DataSource druidDataSource() {
return new DruidDataSource(); }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/24102.html