mybatis连接mysql加密实现

参考文章1

参考文章2

      直接重写BasicDataSource接口的setPassword方法;

这里同样存在一个问题,就是在重写的方法中,我们可以对password,username

进行解密处理,但是不能根据database.properties中的字段jdbc.isencoder值来判断

是否需要解密。

参考文章3

       采用EncryptPropertyPlaceholderConfigurer extends PropertyPlaceholderConfigurer的方式

具体入参考文章3,在扩展的类中进行解密操作,然后其他的操作与mybatis连接mysql中相同

但是在实现的过程中发现一个问题:就是在.properties文件中设置一个字段jdbc.isencoder = 0

但是不知道怎么去使用这个字段????

所以在加载这个配置文件的时候,不知道如何去判断是否该解密,只能判断哪些字段该解密(用户名,密码)

       文章3中采用的重写PropertyPlaceholderConfigurer类中的convertProperty函数,而在这这个函数传入的

值时属性名和值,通过属性和我们需要解密的属性名对比,若是则调用解密函数进行解密。这里的局限性就是

我们无法在最开始文件中去配置是否需要加解密。所以后面我又网上找到了一个类似的其它的实现方式如下:

spring在加载.propertoes配置文件时进行加密解密:参考文章4

       在参考文章4中,通过重写PropertyPlaceholderConfigurer父类的processProperties函数

可以对读取的所有字段进行处理,这样就解决了文章3中的问题,可以根据配置来决定是否采用

加密的方式。

      在实现文章4中,发现还是需要在函数最后加上super.processProperties(beanFactoryToProcess, props);

不然在获取到.properties文件后,在注入数据连接池时,不能通过类似于${}的方式来获取前面读取的.properties

中的值。

 

 

 

 

posted @ 2018-09-26 11:23  弱水三千12138  阅读(1777)  评论(0编辑  收藏  举报