欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

程序员文章站 2022-10-16 14:43:48
上一节把springboot和jdbcTemplate大概用法说了一下,以及大概看了一下源码,还说了加载sql文件时的原理。 这一节来看看自动注入JdbcTemplate的原理,顺便用一用Druid数据源(功能比较强大,可以想象成一个监督设备,可以监控很多东西) 话说,sql文件要放在类路径下,建表 ......

  上一节把springboot和jdbctemplate大概用法说了一下,以及大概看了一下源码,还说了加载sql文件时的原理。

  这一节来看看自动注入jdbctemplate的原理,顺便用一用druid数据源(功能比较强大,可以想象成一个监督设备,可以监控很多东西)

  话说,sql文件要放在类路径下,建表sql(schema-all.sql或者schema.sql),插入数据的sql(data-all.sql或者data.sql),那能不能自定义名字呢?

1.自定义sql文件名称

  在yml文件里面,指定spring.datasource.schema和spring.datasource.data(我们配置的这个也会绑定到那个datasourceproperties类上)

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

  

  其实从上一节所说的那个监听器里面的getscripts方法可以清晰的看到

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

  

2.自动配置jdbctemplate原理(估计又是哪个自动配置类...嘿嘿!)

  其实springboot内部就自动为我们配置好了jdbctemplate,我们只需要加个@autowired注解就能自动注入

  具体的原理我们来看看一个自动配置类jdbctemplateautoconfiguration

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

 

3.使用druid数据源以及数据源自动装配原理

  想要使用druid数据源,必须先导入依赖

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

 

  yml文件配置数据源(想要看看druid独有的所有属性,可以点这个数据源进去看看)

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

  

  这个时候注意,我们要监控web应用所有的行为,怎么监控呢?肯定是另外设置一个非常隐秘的url(对应一个servlet),并且我们访问web应用,有的东西没什么必要监控比如一些静态html(这对应一个filter)。

  所以,配置类中除了要配置一下数据源和yml文件绑定,还要另外设置一个servlet,以及filter

  随意找个配置类:

  配置servlet初始化参数时,具体所有的可配置参数在statviewservlaet的父类里面,不要忘记配置这个秘密的url。

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

 

  

  过滤器配置

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

 

  运行应用,输入网址localhost:8080/druid/   

  效果展示:

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

  

  到这里,druid数据源的切换以及配置监控的功能算是初步过了一遍。具体的要自己去好好试试。不过,主要的是为什么可以这么用啊?下面就来看看这其中的自动配置原理。

  各位可以多在这里看看,每个功能的自动配置类和配置类都可以在这里找到,找到jdbc

  带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

  带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

 

   假如上面这些数据源都不是你想要用的,你还可以自定义的数据源(比如druid等优秀的数据源),我们重点就来看看这里

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

 

  可以点开看看maybegetdrivaerclassname()方法和bind()方法

 带着萌新看springboot源码10(springboot+JdbcTemplate+druid)

  

  ok,大概的看了看自定义数据源的源码,其实也就那样,不过也提醒了我们,假如我们要更换数据源。可以先来看看这个配置类里面有没有符合条件的,有的话直接导入依赖,然后sprin.datasource.type=xxx,以及修改一些默认参数;没有的话就自定义,其实还是导入依赖,然后配置一下独有的属性(如果配置独有属性就要在配置类中配个datasource了)。

  这次是最基本的springboot+jdbctemplate+druid,后面可能还会整合一些其他的持久层框架,emmmm.....有时间再慢慢写。。