Spring+Quartz实现动态定制定时任务并适配各种数据库Spring+
(1)解决方式1:
代码当中动态适配所有数据库,根据数据库类型采用相应的代理类,不修改配置文件。
方案1:最简单直接,如果是自己项目使用,完全ok。但如果是一件产品,大量用户使用的话,体验太差,不能采用。
方案2:体验好,用户也感觉不到。当时否定的原因在于:自己技术不行,担心用户在初始化之前quartz已经读取了配置文件,这样就会导致用户在第一次启动时候出现问题。最后请教了前辈,我们产品初始化数据库是第一个操作,spring注入在其后,所以,这样做是没有任何问题的。比较好的方案。
方案3:最麻烦也最困难的方案,需要对spring-quartz的初始化过程比较了解,但因为已经否定了方案2,所以自己就选择了这个,最终也实现了。
其实要是没有sqlserver的问题的话,方案3也挺简单的。
我去查看了代理类之间的不同,就我使用的五种数据库,他们的区别就只是读取二进制文件的方式不同而已,重写了两个方法而已。解决方案也很简单,自己写一个数据库代理类,在静态区去判断数据库类型。再读取二进制数据时,把quartz本身提供的读取方法搬过来,调用一下对应的即可。
- 解决方式2:还有另外一种解决办法就是升级quartz版本 低版本的存在问题 高版本的不存在问题