带着萌新看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类上)
其实从上一节所说的那个监听器里面的getScripts方法可以清晰的看到
2.自动配置JdbcTemplate原理(估计又是哪个自动配置类...嘿嘿!)
其实springboot内部就自动为我们配置好了JdbcTemplate,我们只需要加个@Autowired注解就能自动注入
具体的原理我们来看看一个自动配置类JdbcTemplateAutoConfiguration
3.使用Druid数据源以及数据源自动装配原理
想要使用Druid数据源,必须先导入依赖
yml文件配置数据源(想要看看Druid独有的所有属性,可以点这个数据源进去看看)
这个时候注意,我们要监控web应用所有的行为,怎么监控呢?肯定是另外设置一个非常隐秘的url(对应一个servlet),并且我们访问web应用,有的东西没什么必要监控比如一些静态html(这对应一个filter)。
所以,配置类中除了要配置一下数据源和yml文件绑定,还要另外设置一个Servlet,以及Filter
随意找个配置类:
配置servlet初始化参数时,具体所有的可配置参数在StatViewServlaet的父类里面,不要忘记配置这个秘密的url。
过滤器配置
运行应用,输入网址localhost:8080/druid/
效果展示:
到这里,Druid数据源的切换以及配置监控的功能算是初步过了一遍。具体的要自己去好好试试。不过,主要的是为什么可以这么用啊?下面就来看看这其中的自动配置原理。
各位可以多在这里看看,每个功能的自动配置类和配置类都可以在这里找到,找到jdbc
假如上面这些数据源都不是你想要用的,你还可以自定义的数据源(比如Druid等优秀的数据源),我们重点就来看看这里
可以点开看看maybeGetDrivaerClassName()方法和bind()方法
ok,大概的看了看自定义数据源的源码,其实也就那样,不过也提醒了我们,假如我们要更换数据源。可以先来看看这个配置类里面有没有符合条件的,有的话直接导入依赖,然后sprin.datasource.type=xxx,以及修改一些默认参数;没有的话就自定义,其实还是导入依赖,然后配置一下独有的属性(如果配置独有属性就要在配置类中配个DataSource了)。
这次是最基本的springboot+JdbcTemplate+Druid,后面可能还会整合一些其他的持久层框架,emmmm.....有时间再慢慢写。。
带着萌新看springboot源码10(springboot+JdbcTemplate+druid)的更多相关文章
- 带着萌新看springboot源码8(spring ioc源码 完)
上一节说到实例化了所有的单实例Bean,后面还有一步遍历 12.完成容器刷新(finishRefresh();) 那个和生命周期有关的后置处理器类型是LifecycleProcessor:监听器原理我 ...
- 带着萌新看springboot源码05
上一节走了一遍从浏览器发出请求到得到向页面的流程,基本的功能是已经实现了.但是现在啊,我想自定义一个拦截器(拦截器可以做用户登录验证,如果登录了,就让你通过,如果没有登录,就重定向登录页面),这里就不 ...
- 带着萌新看springboot源码8(spring ioc源码上)
emmm.....这次先不说springboot原理,先好好回顾一下以前的注解版spring原理,先把spring原理了解清晰了,再看springboot原理更容易. 要说起spring,最重要的就是 ...
- 带着萌新看springboot源码03
上一节讲到了快速新建一个springboot应用,以及springboot的自动配置类起作用的时机,并且一起看了一个自动配置类的源码. 这一节我们来粗略看看当用户在浏览器输入一个url,怎么样返回一个 ...
- 带着萌新看springboot源码12(启动原理 下)
先继续接上一篇,那个启动原理还有一点没说完. 6. afterRefresh(context, applicationArguments); 看这个名字就知道,应该就是ioc容器刷新之后的一些操作了, ...
- 带着萌新看springboot源码11(springboot启动原理 源码上)
通过前面这么多讲解,springboot原理应该也大概有个轮廓了,一些基本的配置,从客户端url到controller(配置一些要用的组件,servlet三大组件,处理器映射器,拦截器,视图解析器这些 ...
- 带着萌新看springboot源码09(springboot+JdbcTemplate)
emmm.....常规开局,继续说一下废话,前面简单的说了一下spring的ioc容器创建原理(花了不少时间去看了别人的博客+查了不少资料+自己的理解),相信大家对ioc容器有了一个初步的认识了. s ...
- 带着萌新看springboot源码04
继续开头说些废话,我也不知道什么鬼,每次写着写着经常会写到其他地方去了,太容易分神了. 这次说一下springboot对于springmvc的大概整个流程,以请求动态网页为例 . 1.梳理一下spri ...
- 带着萌新看springboot源码8(spring ioc源码下)
继续接着上一节,到了第六步(温馨提醒,内容有点小多,不过看完ioc原理就差不多了) 6.注册Bean后置处理器(registerBeanPostProcessors(beanFactory)) 最后一 ...
随机推荐
- 关于resharper激活
resharper 是一款非常强大的vs辅助开发插件,提供了很多快捷操作功能,本人已经离不开它了,但是resharper总会遇到lincese过期,需要激活的问题,现在提供以下方式,仅供参考 1.打开 ...
- elasticsearch简单操作
现在,启动一个节点和kibana,接下来的一切操作都在kibana中Dev Tools下的Console里完成 创建一篇文档 将小黑的小姨妈的个人信息录入elasticsearch.我们只要输入 PU ...
- mysql练习
1.表关系 创建如下表格,并创建相关约束 ##(1)创建一个数据库 create database db2 default charset utf8; ##切换到db2数据库中 use db2 ##创 ...
- 转 the best for wcf client
原文:http://stackoverflow.com/questions/573872/what-is-the-best-workaround-for-the-wcf-client-using-bl ...
- [LeetCode] Possible Bipartition 可能的二分图
Given a set of N people (numbered 1, 2, ..., N), we would like to split everyone into two groups of ...
- DOM-节点概念-属性
1.节点的概念 页面中的所有内容,包括标签,属性,文本(文字,空格,回车,换行等),也就是说页面的所有内容都可以叫做节点. 2.节点相关的属性 2.1.节点分类 **标签节点:**比如 div 标签, ...
- JetBrains系列IDE快捷键大全(转载)
编辑 快捷键组合 说明 Ctrl + Space 代码自动完成提示(选择) Alt + Enter 显示意图动作和快速修复 Ctrl + P 参数信息 (在调用方法参数忘记的时候,提示) Ctrl + ...
- Linux入门总结——虚拟机安装配置以及vim简单操作
安装配置ubuntu 安装准备 vittualbox-5.2.22版本(win10) ubuntu-12.04 安装VirtualBox 1.双击VirtualBox-5.2.2-119230-Win ...
- ava怎样将"1413863429"字符串转换成datetime格式
.....一般来说应该是一个 毫秒数 String str ="1413863429"; Long timeLong = Long.parseLong(str); SimpleDa ...
- ML-Framework:ML.NET 0.3 带来新组件
ML.NET在今年微软在Build 2018 会议上宣布的机器学习框架现已正式推出0.3版本 https://github.com/dotnet/machinelearning/releases/ta ...