druid mysql 配置优化_Spring+SpringMVC+MyBatis+easyUI整合优化篇(十)数据层优化-整合druid...

druid介绍

这是druid对自己的介绍:

AAffA0nNPuCLAAAAAElFTkSuQmCC

Druid是阿里开源的一个数据库连接池技术,号称自己是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。至于为什么它态度这么屌,是因为Druid确实有这个实力,Druid是在目前java技术市场中流行的连接池技术的基础上开发出来的,DBCP、C3P0这些连接池技术包含的功能Druid都有,而且它也不仅仅只是一个连接池,Druid是一个强大的JDBC组件,它包括三部分:

DruidDriver,能够提供基于Filter-Chain模式的插件体系。

DruidDataSourc,高效可管理的数据库连接池。

SQLParser。

Druid在原来连接池技术的基础上又添加了一些使用功能,可以说是青出于蓝而胜于蓝了,同时他自身的插件体系也使得Druid具有很好的扩展性,最关键的是,Druid依然是github上较为活跃的开源项目,版本更新也比较频繁,这一点是我个人感觉最加分的。介绍文字就到这里,本篇文章是介绍整合代码的。

druid整合

更新代码已上传到我的github里,地址点这里

首先是更新pom文件,添加druid依赖

com.alibaba

druid

1.0.24

更新后的数据源配置文件及参数解释:

配置文件分离

在做Druid整合的时候,感觉原来的配置文件比较乱,每次有一点更新都要去修改applicationContext.xml文件,而且applicationContext.xml文件又比较大,内容多的情况下改起配置来确实痛苦,因此就借着这次整合Druid连接池,把配置文件重新整理了一下。

原applicationContext.xml文件拆分为spring-context.xml,spring-context-mvc.xml,spring-context-mybatis.xml,jdbc-druid-config.properties文件,然后修改web.xml文件即可。

contextConfigLocation

classpath:spring-context.xml

...

springMVC

org.springframework.web.servlet.DispatcherServlet

contextConfigLocation

classpath:spring-context-mvc.xml

1

springMVC

*.do

分离之后,明显赶紧结构化清晰很多,相关的配置很清楚在哪一个模块,之后需要整合加入配置也很简单清楚,需要指出的是,每个配置文件的命名及里面的配置内容都要写清楚,不要一股脑全部复制粘贴,用到什么写什么,尽可能的简化和规范配置文件,让配置文件看的明白。

AAffA0nNPuCLAAAAAElFTkSuQmCC

总结

本篇文章介绍了整合过程,同时也对Druid参数做了详细的解释,如果想继续深入了解可以去github上的druid仓库学习代码,druid仓库在这里。

本来只是想更新整合Druid模块代码的,但是过程中看到配置文件混乱,确实忍不了,于是也顺手做了修改,虽然只是做了一点事情,但是代码文件看着舒服也是极好的,接下来的文章里可能还会继续更新druid,看时间安排吧。

常见问题

欢迎大家使用Druid,常见问题在这里解答,希望对大家有所帮助。

1. Druid是什么?

Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。

2. 在哪里下载druid

3. 怎么获取Druid的源码

Druid是一个开源项目,源码托管在github上,源代码仓库地址是 https://github.com/alibaba/druid 。同时每次Druid发布正式版本和快照的时候,都会把源码打包,你可以从上面的下载地址中找到相关版本的源码

4. 怎么配置maven

Druid 0.1.18 之后版本都发布到maven中央仓库中,所以你只需要在项目的pom.xml中加上dependency就可以了。例如:

com.alibaba

druid

${druid-version}

5. 怎么打开Druid的监控统计功能

Druid的监控统计功能是通过filter-chain扩展实现,如果你要打开监控统计功能,配置StatFilter,具体看这里:https://github.com/alibaba/druid/wiki/配置_StatFilter

6. 怎样使用Druid的内置监控页面

7. 内置监控中的Web和Spring关联监控怎么配置?

8. 怎么配置防御SQL注入攻击

Druid提供了WallFilter,它是基于SQL语义分析来实现防御SQL注入攻击的。具体配置看这里:

https://github.com/alibaba/druid/wiki/配置-wallfilter

9. Druid有没有参考配置

10. 我想日志记录JDBC执行的SQL,如何配置

Druid提供了Log4jFilter、CommonsLogFilter和Slf4jFilter,具体配置看这里

https://github.com/alibaba/druid/wiki/配置_LogFilter

11. 我的程序可能产生连接泄漏了,有什么办法?

12. 在Druid中使用PSCache会有内存占用过大问题么?

13. 有没有和其他数据库连接池的对比?

14. 从其他连接池迁移要注意什么?

15. Druid中有没有类似Jboss DataSource中的ExceptionSorter

ExceptionSorter是JBoss DataSource中的优秀特性,Druid也有一样功能的ExceptionSorter,但不用手动配置,自动识别生效的。具体看这里:https://github.com/alibaba/druid/wiki/ExceptionSorter_cn

16. Druid中的maxIdle为什么是没用的?

maxIdle是Druid为了方便DBCP用户迁移而增加的,maxIdle是一个混乱的概念。连接池只应该有maxPoolSize和minPoolSize,druid只保留了maxActive和minIdle,分别相当于maxPoolSize和minPoolSize。

17. 我的应用配置的是JNDI数据源,可以用DruidDataSource么?

DruidDataSource支持JNDI配置,具体看这里:https://github.com/alibaba/druid/wiki/配置_JNDI_Tomcat

具体实现的类是这个:com.alibaba.druid.pool.DruidDataSourceFactory,你可以阅读代码加深理解。

18. 我的应用已使用DBCP,是代码中写死的,怎样更换为Druid?

可以的,Druid提供了一个中完全平滑迁移DBCP的办法。

1) 从http://repo1.maven.org/maven2/com/alibaba/druid/druid-wrapper/ 下载druid-wrapper-xxx.jar

2) 加入druid-xxx.jar

3) 从你的WEB-INF/lib/中删除dbcp-xxx.jar

4) 按需要加上配置,比如JVM启动参数加上-Ddruid.filters=stat,动态配置druid的filters

这种用法,使得可以在一些非自己开发的应用中使用Druid,例如在sonar中部署druid,sonar是一个使用jruby开发的web应用,写死了DBCP,只能够通过这种方法来更换。

19. 我想试用快照版本,怎么获取?

20. 有一些SQL执行很慢,我希望日志记录下来,怎么设置?

21. 我希望加密我的数据库密码怎么办?

22. 如何参与Druid的开发

Druid是一个通过github开源的项目,github的特性,使得你很容易参与其中。这里有详细说明

https://github.com/alibaba/druid/wiki/如何参与

23. Druid的发布周期是怎样?

Druid是一个活跃的项目,长期维护。每个月有一个发布窗口,除非遇到重大bug和非常紧急的需求,否则都是每个月最多发布一次。如果没有足够多的需求,发布窗口就不会被使用。

24. 如果DruidDataSource在init的时候失败了,不再使用,是否需要close

是的,如果DruidDataSource不再使用,必须调用close来释放资源,释放的资源包括关闭Create和Destory线程。

26. Oracle下jdbc executeBatch时,更新行数计算不正确

使用jdbc的executeBatch 方法,如果数据库为oracle,则无论是否成功更新到数据,返回值都是-2,而不是真正被sql更新到的记录数,这是Oracle JDBC Driver的问题,Druid不作特殊处理。

28. 如何保存监控记录

29. 我想Log输出SQL执行的信息怎么办?

30. 如何配置Druid内置的log实现

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值