SpringBoot:数据访问之数据库场景的自动配置原理---- 17

数据源的自动配置

导入JDBC场景

sdsds引入 spring-boot-starter-data-jdbc 场景

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

在这里插入图片描述
sdsd[注1]:JDBC场景并没有导入数据库驱动,这是因为不确定我们要用哪种数据库,因此需要我们自己导入版本,接下来以mysql为例。

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

sdsd[注2]:SpringBoot默认数据库驱动是 8.0.22,注意要和自己的数据库驱动对应,其实也不是说版本一定一致,比如我们的mysql版本是5.5.15,而我们通过maven.repository用5开头的数据库驱动即可,而最新版的数据库驱动连接方式不一样,会出现错误。
错误代码:type: com.zaxxer.hikari.HikariDataSourceLoading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver’. The driver is automatically registered Loading class com.mysql.jdbc.Driver'. This is deprecated. The new driver class iscom.mysql.cj.jdbc.Driver’. The driver is automatically registered
sdsdsddsdsdsdsdsd在这里插入图片描述

<dependency> 
	<groupId>mysql</groupId> 
	<artifactId>mysql-connector-java</artifactId> 
<version>5.1.49</version> </dependency>
自动配置原理

sdsds自动配置相关:spring-boot autoconfigure:2.4.0 ==> spring-boot-autoconfigure-2.4.0.jar ==>org.springframework.boot.autoconfigure ==> jdbc
sddsdssdsdddsdsddssdsd在这里插入图片描述
sdsdsDataSourceAutoConfiguration 数据源(连接池)自动配置:

sdsddsss①、@EnableConfigurationProperties(DataSourceProperties.class) ==> 修改数据源相关的配置:spring.datasource
ssddsd在这里插入图片描述
sdsddsss②、数据库连接池的配置, 只有当容器中没有DataSource才自动配置的,如果有就用我们自定义的。
sdssdsd在这里插入图片描述
sdsddsss③、数据库一引进jdbc场景就会自动引入 HikariDataSource(我们通过文章开始的图显示导入的jar包就可以发现这一点)(当然通过DataSourceAutoConfiguration 也可以看出这一点)
sdsddss在这里插入图片描述
sdsdsDataSourceTransactionManagerAutoConfiguration 事务管理器的自动配置

sdsdsJdbcTemplateAutoConfiguration: JdbcTemplate的自动配置,可以来对数据库进行crud

sdsddsss①、修改JdbcTemplate相关的配置:spring.jdbc
sdsdssddsss在这里插入图片描述

@ConfigurationProperties(prefix = "spring.jdbc")
public class JdbcProperties { private final JdbcProperties.Template template = new JdbcProperties.Template(); ...}

sdsddsss②、容器中有JdbcTemplate
sdssdsdd在这里插入图片描述
sdssdsdd在这里插入图片描述
sdsdsJndiDataSourceAutoConfiguration: jndi的自动配置

sdsdsXADataSourceAutoConfiguration: 分布式事务相关的

修改配置项\测试代码
spring:
  datasource:
    url: jdbc:mysql://localhost:3306/girls
    username: root
    password: root
    driver-class-name: com.mysql.jdbc.Driver
  jdbc:
    template:
      query-timeout: 3
    @Test
    void contextLoads() {
//        Object object = jdbcTemplate.queryForObject("seclect * from admin");
        jdbcTemplate.queryForList("select * from admin");
        Long aLong = jdbcTemplate.queryForObject("select Count(*) from admin", Long.class);
        log.info("记录总数:{}",aLong);
    }

sdsds结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值