• spring配置数据源


    介绍

    • 我们在开发中常常需要和数据库打交道,但是我们现在常用的框架,比如mybatis或者他的plus版都需要数据源的配置。接下来我就配置常见的两种数据源druid数据源和c3po数据源。

    一、手动配置参数

    • 在进行数据源的配置时,我们需要配置常见的四件套参数:druid、url、password、username。接下来我们就使用手动的方式进行配置。
    • 在配置之前我们先看看都需要导那些坐标。
      在这里插入图片描述
    • 坐标导好之后,就开始进行手动配置数据源,我们先配置c3po的数据源。很简单,首先的创建一个该数据源的对象,然后就是我刚刚提到的四件套druid、url、password、username。将这些参数配置好了之后就可以进行getConnection操作了。这里需要注意的一点是,这个druid和url,不同版本的数据库坐标这两个的配置参数有点不太一样。具体的参数可以参考下面的第二张图。我使用的数据库坐标是8.0.11。
      在这里插入图片描述
    • 上面是配置c3po的数据源,下面我们来看看druid数据源的配置,也很简单。和上面几乎没有什么区别,唯一不同就是数据源对象名称不一样。其他的几乎都一样。同样的,需要注意不同版本的druid参数和url参数
      在这里插入图片描述
    • 按理来说,我们已经掌握了,但是大家仔细想想,我们做的东西是给别人用的。客户在是使用我们的产品时能不能来修改我们的源代码。那肯定是不行的。所以,我们不能将参数得配置写死,应该允许用户按照自己的使用情况来进行修改。所以,很明显,上述的方式是不可取得。但是如何解决这一问题呢?接着往下看。

    二、通过配置文件进行属性配置

    • 上面我们提到了一个问题,为了解决这个问题,我们引入了properties文件。通过读取该文件里面的属性值来进行配置,从而就可以实现在不改变源码得情况进行属性值得修改。接下来就来看看怎么做。
    • 由于我们创建的是spring的项目,所以,首先我们先在resource目录下创建一个properties文件,名字随便起。我起的是jdbc.properties。然后在该文件里面写上我们需要的参数。
      在这里插入图片描述
    • 在写好properties文件之后,我们来看看如何读取该文件,很简单,spring已经有相应的工具来读取。我们直接拿来用就行。通过ResourceBundle.getBundle()这个方法就可以实现文件的读取,注意:这个方法需要一参数,该参数就是文件名称,不需要文件后缀名。然后利用getString()既可以获取properties文件里面相应的键所对应的值。然后再将该值传递进去。但是再仔细想一想,这样的话还得我们自己来生成这个数据源对象。我们现在学的是什么?Spring呀,他有IOC,那么我们是不是可以将数据源对象的创建交给spring来进行。
      在这里插入图片描述

    三、通过spring来创建数据源

    • 上面我们自己实现数据源的创建,但是为了体现框架的方便性,我们再来看看如何通过框架来完成数据源的创建。
    • 首先,我们得先在resource目录下创建一个xml文件。如下图所示:
      在这里插入图片描述
    • 然后再使用bean标签来进行数据源对象的创建。如下图;这里为什么要这样写我就不说了,这是属于spring对象管理那一部分的知识。
      在这里插入图片描述
    • 然后我们按照spring那一套流程就可以获取到该数据源对象了。
      在这里插入图片描述
    • 看完上面的配置后,我们发现,是不是properties文件没有用到。所以我们来看看如何将propereties文件给添加进去。
    • 首先,我们还是得先创建一个properties文件(和上面的一样),然后在xml文件里面引入这个properties文件。那么该如何引入呢?很简单,首先我们先将context空间给导入,然后按照下图进行编写就行。再导入之后通过${键}来读取properties文件里面的内容。
      在这里插入图片描述
    • 最后按照spring那一套流程进行数据源对象的获取就行了。
      在这里插入图片描述
    • 我在这里主要讲解了使用手动配置和配置文件配置数据源的方式,感兴趣的话还可以学习一下如何通过注解的方式来进行配置。
  • 相关阅读:
    使用react-sizeme解决react-grid-layout中侧栏(抽屉)展开或隐藏时不会自适应容器大小的问题
    苹果使用3D打印技术制造Apple Watch Series 9手表外壳
    conda创建python虚拟环境
    Linux高效快捷命令补充(sort,uniq,tr,cut,expr,split,paste,eval)
    Maven
    猿创征文|2022年快过完了,是时候总结一下那些优秀的 React 组件库
    活性染料研究:Lumiprobe AF594 NHS 酯,5-异构体
    Python实现mysql基于配置文件的全自动增量数据备份
    一个超经典 WinForm 卡死问题的最后一次反思
    解决wget下载过慢的问题
  • 原文地址:https://blog.csdn.net/qq_46111881/article/details/125508013