数据源的配置,首先说明,boot已经集成了数据源,我们可以使用其知道的数据源,但是谁会用他自带的呢?哈哈,可以原理还是很重要的,需要好好了解下,之后呢,想用什么数据源就对接什么数据源就可以了。哈哈哈
1. 使用数据源的前提,加入依赖
starter是不是很熟悉,一个start解决所有问题
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
<version>2.3.0.RELEASE</version>
</dependency>
对接的是mysql数据库,引入mysql的启动包
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.9</version>
</dependency>
深入的了解下这个spring-boot-starter-jdbc中引入了那些依赖
<dependencies>
基础依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<version>2.3.0.RELEASE</version>
<scope>compile</scope>
</dependency>
Hikari数据源和durid、dpcp、c3p0一样的功能
<dependency>
<groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId>
<scope>compile</scope>
</dependency>
spring-jdbc的依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<scope>compile</scope>
</dependency>
</dependencies>
2. 数据源的自动配置类看一眼DataSourceAutoConfiguration
想象一下肯定有这么一个类叫:DataSourceAutoConfiguration
它里面会有个properies类封装相关yml参数,
我们要做的就是在yml中写一些他规定好的配置就可以了。
- 池化的数据源
@Configuration(proxyBeanMethods = false)
@Conditional(PooledDataSourceCondition.class)
@ConditionalOnMissingBean({ DataSource.class, XADataSource.class })
@Import({ DataSourceConfiguration.Hikari.class, DataSourceConfiguration.Tomcat.class,
DataSourceConfiguration.Dbcp2.class, DataSourceConfiguration.Generic.class,
DataSourceJmxConfiguration.class })
protected static class PooledDataSourceConfiguration {
}
2. 类上的注解:
@EnableConfigurationProperties(DataSourceProperties.class)
- DataSourceProperties中规定配置规则,和封装配置属性
@ConfigurationProperties(prefix = "spring.datasource")
public class DataSourceProperties implements BeanClassLoaderAware, InitializingBean {
private ClassLoader classLoader;
/**
* Name of the datasource. Default to "testdb" when using an embedded database.
*/
private String name;
以:spring.datasource开头的配置既可以,配置我们自己的数据源
3. yml配置:
spring:
datasource:
url: jdbc:mysql://127.0.0.1:yuhl?useSSL=false
driver-class-name: com.mysql.jdbc.Driver
username: root
password: root
#type就是实现了DataSource数据源,可以换成其他的哦!前提,需要引入其他数据源的依赖先。
type: com.zaxxer.hikari.HikariDataSource
3. 使用的时候注入数据源接口
@RestController
public class HelloController {
@Autowired
DataSource dataSource;
@RequestMapping("/hello")
public String hello() {
System.out.println("dataSource" + dataSource);
return "hello";
}
}
4. 测试
type: com.zaxxer.hikari.HikariDataSource:
如果我们把type换了,会怎样嗯?肯定就换成别的数据源了。
下面会介绍使用druid数据源。
5. 总结
使用数据源时:
1. 引入依赖
2. 配置yml即可使用,
3. 中间boot做了什么事:autoconfiguration和properties做到注入。
4. 使用时引用即可使用
下一篇:15-Springboot其他数据源配置之Druid https://blog.csdn.net/fsjwin/article/details/109742300