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

  上一节把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)_第1张图片

  

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

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第2张图片

  

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

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

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

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第3张图片

 

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

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

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第4张图片

 

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

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第5张图片

  

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

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

  随意找个配置类:

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

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第6张图片

 

  

  过滤器配置

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第7张图片

 

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

  效果展示:

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第8张图片

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第9张图片

  

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

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

  带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第10张图片

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第11张图片

  

 

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

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第12张图片

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第13张图片

带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第14张图片

 

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

 带着萌新看springboot源码10(springboot+JdbcTemplate+druid)_第15张图片

  

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

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

转载于:https://www.cnblogs.com/wyq1995/p/9998210.html

你可能感兴趣的:(java)