基于Spring的多数据源(Druid)定时任务项目开发(一)<带Demo>
来源:互联网 发布:淘宝一件代发供货平台 编辑:程序博客网 时间:2024/05/29 16:41
这个基于Spring的对数据源定时任务项目,从2015年11月份产生想法到现在已经过了半年了。起初想着开发这个项目是因为公司业务需要,其实之前公司有人开发过一个相同功能的项目。但是项目结构杂乱,同时开发的人员太多,导致代码特别的混乱,甚至业务都不能正常的运行。所以,在接触到那个项目之后自己就起了自己搭建并开发的想法,到现在已经更新到第三个版本了。下面会先大致的介绍下项目用到的几个关键的技术,已经用到的部分。
- MAVEN
项目jar的管理是用的maven,这个是我刚接触工作业务的时候用到的管理,一直觉得很好用,配置简单,jar再也不用自己下载。基本比分之九十九的jar都能下载到,但是有很少一部分下载不了,比如连接Oracle数据库的jar,这个时候就需要自己在网上下载之后,手动导入到本地库中。具体的方法见Maven导入本地jar - Spring
Spring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由OP)。简单来说,Spring是一个分层的JavaSE/EEfull-stack(一站式) 轻量级开源框架。 这个就不多介绍了,大家都知道的。 - Druid
Druid是一个JDBC组件,它包括三部分:
1、DruidDriver 代理Driver,能够提供基于Filter-Chain模式的插件体系。
2、DruidDataSource 高效可管理的数据库连接池。
3、SQLParser
阿里开发的,有兴趣的话,Druid GitHub中文地址
至于项目的搭建,大致的步骤就是,新建maven项目,然后maven项目转web项目。(具体的操作方法,这里就不详细的介绍了),下面粘贴上pom.xml。
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ewidewater</groupId> <artifactId>synchroInfo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <dependencies> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>4.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>4.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.quartz-scheduler</groupId> <artifactId>quartz</artifactId> <version>2.2.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context-support</artifactId> <version>4.2.2.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>4.2.2.RELEASE</version> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.8.1</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.19</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.12</version> </dependency> <dependency> <groupId>log4j</groupId> <artifactId>log4j</artifactId> <version>1.2.17</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>1.0.1</version> </dependency> </dependencies></project>
下面的重点就是多数据源的编码了,下面先附上
DynamicDataSource.java
DataSourceContextHolder.java
DataSourceConst.java
具体的每个类的用途,在代码间都有相关的解释
package com.ewidewater.util;import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource;/** * 重写一个动态数据源的类,继承Spring * AbstractRoutingDataSource类,并且实现determineCurrentLookupKey()方法。 * 看determineCurrentLookupKey()方法的注释,意思大致就是决定当前数据源的key。 * * @author Administrator * */public class DynamicDataSource extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { return DataSourceContextHolder.getDateSourceType(); }}
package com.ewidewater.util;public class DataSourceContextHolder { /** * 为了线程安全,设置每个线程单独的变量 */ private static final ThreadLocal contextHolder = new ThreadLocal(); /** * @Description:设置当前数据源的key * @param * @return void * * @author wang_yw )_) * @date:2016年6月3日 */ public static void setDataSourseType(String dataSourceType){ contextHolder.set(dataSourceType); } /** * @Description:获取当前数据源的key * @param * @return String * * @author wang_yw )_) * @date:2016年6月3日 */ public static String getDateSourceType(){ return (String)contextHolder.get(); } /** * @Description:清除当前数据源的key * @param * @return void * * @author wang_yw )_) * @date:2016年6月3日 */ public static void clearDataSourceType(){ contextHolder.remove(); }}
package com.ewidewater.util;/** * 数据源常量 * @author wang_yw (_( */public class DataSourceConst { public final static String one = "one"; public final static String two = "two";}
今天太晚了,就不接着详细介绍了,这里有一个简单的项目Demo,大家有兴趣的话,可以下载运行。有疑问的或者更好的建议的话,欢迎留言,或者邮箱wdssdream@163.com,有用的话记得给个评分哦~
下载地址:Demo下载地址
项目JDK1.8,1.7也是可以运行的,编译的时候修改下就行了。
2 0
- 基于Spring的多数据源(Druid)定时任务项目开发(一)<带Demo>
- Spring定时任务的Demo
- spring boot druid多数据源的yml配置
- spring boot 多数据源的XA事务(Druid+Atomikos)
- 基于spring boot项目的多数据源配置
- spring,mybatis,druid,多数据源配置
- DRUID配置多数据源项目
- Spring整合Quartz实现定时任务的时间更新,暂停和启用(不需要重启项目并且配置多数据源)
- spring自带的轻量级定时任务
- spring自带的定时任务配置
- spring自带的定时任务框架
- spring 自带的定时任务
- Spring mvc mybaties druid 搭建多数据源
- spring boot中使用druid多数据源配置Mybatis
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- spring boot+jpa+druid多数据源集成示例
- Spring Boot 整合 Mybatis 实现 Druid 多数据源详解
- 一些jquery技巧
- 对存储多路径的测试
- Unity3D 之OnTriggerEnter和OnCollisionEnter方法的一点个人心得
- Spring Annotaion Support
- Windows 8.1 PLSQL_32连接到RHEL6.1 Oracle10gr2_64
- 基于Spring的多数据源(Druid)定时任务项目开发(一)<带Demo>
- 查看LUN对应的HBA、查看HBA的WWN信息
- LeetCode--No.53--Maximum Subarray
- [leetcode] 24. Swap Nodes in Pairs
- LeetCode--No.237--Delete Node In a Linked List
- 用python自动发微博
- 勾股定理一日一证连载13
- 随笔:写给我深爱的球队
- JavaScript Array 原型方法 大盘点