- 浏览: 288204 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
yhxf_ie:
网上都是这个方法 改了之后仍然无效啊! 真急人
让Gradle支持中文 -- 关于 "编码 GBK 的不可映射字符"错误的解决 -
smart152819:
夜行侠老师gradle教学视频地址:http://www.it ...
Gradle笔记 -
laorer:
gradle init --type pom
MAVEN项目秒变Gradle项目 -
sulpha:
Gradle 2.0以上,需要把Compile改为JavaCo ...
让Gradle支持中文 -- 关于 "编码 GBK 的不可映射字符"错误的解决 -
marshan:
默认情况下都报错 没有setupBuild这个task 楼主提 ...
MAVEN项目秒变Gradle项目
话不多说直接上代码,用者自提,不喜勿喷,3Q
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byName"> <!-- 数据源 --> <bean id="parentDataSource" class="org.logicalcobwebs.proxool.ProxoolDataSource"> <property name="driver" value="oracle.jdbc.driver.OracleDriver"/> <property name="trace" value="true"/> </bean> <bean id="sc" parent="parentDataSource"> <property name="driverUrl" value="jdbc:oracle:thin:@172.16.6.220:1521:cmes"/> <property name="user" value="meams"/> <property name="password" value="xwcmes"/> </bean> <bean id="lz" parent="parentDataSource"> <property name="driverUrl" value="jdbc:oracle:thin:@172.16.6.220:1521:cmes"/> <property name="user" value="geams"/> <property name="password" value="geams"/> </bean> <bean id="dataSource" class="com.core.db.DataSources"> <property name="targetDataSources"> <map key-type="java.lang.String"> <entry value-ref="sc" key="MINE_01"/> <entry value-ref="lz" key="MINE_02"/> </map> </property> </bean> <!-- 事务 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="dataSource" ref="dataSource" /> </bean> <!-- 自定义exception处理 --> <bean id="exceptionResolver" class="com.core.framework.CommonExceptionHandler"/> <!-- 添加Mybatis支持 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource"/> <property name="configLocation" value="classpath:config/ibatis-config.xml"/> <!-- 无需配置ibatis-config.xml中的mapper 由spring自动扫描加入 --> <property name="mapperLocations" value="classpath:com/dhcc/exchange/ibatis/*.xml"/> </bean> <bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"> <constructor-arg index="0" ref="sqlSessionFactory" /> </bean> <!-- 自动将映射接口转换为bean --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" p:basePackage="com.dhcc.exchange.*.dao" p:sqlSessionFactory-ref="sqlSessionFactory"> </bean> <bean id="storageService" class="com.dhcc.exchange.storage.service.StorageService" /> </beans>
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration> <typeAliases> <typeAlias alias="EQUI_STORAGE" type="com.dhcc.exchange.storage.model.Storage" /> </typeAliases> </configuration>
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.dhcc.exchange.storage.dao.StorageDao"> <resultMap type="com.dhcc.exchange.storage.model.Storage" id="EQUI_STORAGE_LIST"/> <select id="queryStorageList" resultMap="EQUI_STORAGE_LIST" parameterType="EQUI_STORAGE"> select id,storage_name from t_equi_storage t </select> </mapper>
package com.core.db; public class DataSourceConstant { public final static String MINE_01 = "MINE_01"; public final static String MINE_02 = "MINE_02"; }
package com.core.db; import org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource; public class DataSources extends AbstractRoutingDataSource { @Override protected Object determineCurrentLookupKey() { return DataSourceSwitch.getDataSourceType(); } }
package com.core.db; public class DataSourceSwitch{ private static final ThreadLocal<String> contextHolder=new ThreadLocal<String>(); public static void setDataSourceType(String dataSourceType){ contextHolder.set(dataSourceType); } public static String getDataSourceType(){ return (String) contextHolder.get(); } public static void clearDataSourceType(){ contextHolder.remove(); } }
package com.core.db;
import java.util.Map;
import java.util.Properties;
import javax.sql.DataSource;
import org.apache.ibatis.datasource.DataSourceFactory;
import org.logicalcobwebs.proxool.ProxoolDataSource;
public class ProxoolDataSourceFactory implements DataSourceFactory {
private ProxoolDataSource dataSource;
public DataSource getDataSource() {
return dataSource;
}
/**
* 此方法中实现对ProxoolDataSource类中相关属性的设置
* house-keeping-sleep-time
* 线程保持休眠时间,house keeper负责检查所有连接的状态,并测试是否需要销毁或者创建,默认时间为30秒
* house-keeping-test-sql
* 如果house keep 线程发现空闲的连接,他会测试使用这个sql进行测试,这个语句应该快速的被执行。像查询日期的sql语句。
* maximum-active-time
* 最大线程活动时间。
* maximum-connection-count
* 数据库最大连接数(默认值为15)
* maximum-connection-count
* 一个连接存在的最长保持活动的时间。默认值是4小时,单位是毫秒
* overload-without-refusal-lifetime
* 这个帮助我们确定连接池的状态。如果在这个时间阀值内(单位为毫秒)拒绝了一个连接,就认为是过载了。默认时间60秒。
*/
public void initialize(Map<String,String> map) {
dataSource = new ProxoolDataSource();
dataSource.setDriver(map.get("driver"));
dataSource.setDriverUrl(map.get("driverUrl"));
dataSource.setUser(map.get("user"));
dataSource.setPassword(map.get("password"));
dataSource.setAlias("alias");
//线程保持休眠时间,house keeper负责检查所有连接的状态,并测试是否需要销毁或者创建,默认时间为30秒
if(map.containsKey("house-keeping-sleep-time")){
dataSource.setHouseKeepingSleepTime(Integer.parseInt(map.get("house-keeping-sleep-time").toString()));
}
//如果house keep 线程发现空闲的连接,他会测试使用这个sql进行测试,这个语句应该快速的被执行。像查询日期的sql语句。
if(map.containsKey("house-keeping-test-sql")){
dataSource.setHouseKeepingTestSql(map.get("house-keeping-test-sql").toString());
}
//最大线程活动时间。
//如果housekeeper 遇到一个线程活动时间超过定义的时间,将会终止这个线程。
//所以你需要设置这个时间大于预计最慢响应的时间(默认时间是5分钟)。
if(map.containsKey("maximum-active-time")){
dataSource.setMaximumActiveTime(Integer.parseInt(map.get("maximum-active-time").toString()));
}
//数据库最大连接数(默认值为15)
if(map.containsKey("maximum-connection-count")){
dataSource.setMaximumConnectionCount(Integer.parseInt(map.get("maximum-connection-count").toString()));
}
//一个连接存在的最长保持活动的时间。默认值是4小时,单位是毫秒。
if(map.containsKey("maximum-connection-lifetime")){
dataSource.setMaximumConnectionLifetime(Integer.parseInt(map.get("maximum-connection-lifetime").toString()));
}
//最小连接保持打开的个数,不管是否需要,默认值是5个。
if(map.containsKey("minimum-connection-count")){
dataSource.setMaximumConnectionLifetime(Integer.parseInt(map.get("minimum-connection-count").toString()));
}
//这个帮助我们确定连接池的状态。如果在这个时间阀值内(单位为毫秒)拒绝了一个连接,就认为是过载了。默认时间60秒。
if(map.containsKey("overload-without-refusal-lifetime")){
dataSource.setMaximumConnectionLifetime(Integer.parseInt(map.get("overload-without-refusal-lifetime").toString()));
}
}
@Override
public void setProperties(Properties arg0) {
}
}
package com.dhcc.exchange.storage.dao; import com.dhcc.exchange.storage.model.Storage; import java.util.List; public abstract interface StorageDao { public abstract List<Storage> queryStorageList(Storage paramVO); }
package com.dhcc.exchange.storage.dao.impl; import java.util.List; import com.core.framework.BaseDao; import com.dhcc.exchange.storage.dao.StorageDao; import com.dhcc.exchange.storage.model.Storage; public class StorageImpl extends BaseDao implements StorageDao { @SuppressWarnings("unchecked") @Override public List<Storage> queryStorageList(Storage paramVO) { return this.getSqlSession().selectList("queryStorageList", paramVO); } }
package com.dhcc.exchange.storage.model; public class Storage { private String ID; private String storage_name; public String getID() { return ID; } public void setID(String ID) { this.ID = ID; } public String getStorage_name() { return storage_name; } public void setStorage_name(String storage_name) { this.storage_name = storage_name; } }
package com.dhcc.exchange.storage.service; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.core.db.DataSourceConstant; import com.core.db.DataSourceSwitch; import com.core.framework.BaseService; import com.core.framework.ServiceException; import com.core.util.Tracer; import com.dhcc.exchange.storage.dao.StorageDao; import com.dhcc.exchange.storage.model.Storage; @Transactional @Service public class StorageService extends BaseService { @Autowired private StorageDao storageDao; public String getStroage() throws ServiceException{ String returnVal = ""; try { DataSourceSwitch.setDataSourceType(DataSourceConstant.MINE_01); List<Storage> storages = storageDao.queryStorageList(new Storage()); returnVal = binder.toJson(storages); Tracer.trace(returnVal); log.debug("[StorageService.getStroage]JSON IS:"+returnVal); } catch (Exception e) { throw new ServiceException("查询菜单列表失败", e); } return returnVal; } }
发表评论
-
Gradle笔记
2012-10-30 08:21 368076.1 每个构建包含一个或多个 "Proj ... -
JSTL 学习、应用记录
2011-07-28 14:34 1224JSTL 学习、应用记录 原来一直没有看过,我说过我是新 ... -
Spring两大核心-AOP和IoC
2011-07-11 10:43 1426Spring两大核心-AOP和 ... -
java内存泄露解析
2011-07-11 10:42 1545原因有很多种, ... -
Java 反射机制
2011-07-11 10:41 1019Java 反射机制 摘要 Reflecti ... -
java 23种设计模式
2011-07-11 10:40 869工厂模式, 工厂方法模式,单例模式, 外观(Facad ... -
Class.forName和New的比较
2011-07-11 10:36 1151Class.forName和New的比较 ... -
null或空值的判断处理-java
2011-07-11 10:33 1403null或空值的判断处理-java 原帖地址 ... -
java中字符串链接性能比较
2011-07-11 10:31 1204原帖地址:http://blog.csdn.net/bes ... -
[转]提高Java反射速度的方法以及对setAccessable的误解
2011-05-30 15:20 2002mercyblitz 写道 ouchxp 写道 ... -
用MyElipse配置WebLogic
2011-04-12 16:16 1361(1)安装Weblogic设置如下: 首先建立domai ... -
Myeclipse9.0正式版下载地址(附破解包)
2011-04-12 11:09 4588用者自提,谢绝乱喷 Windows http:// ... -
C#之int挑战Java之Integer
2010-10-25 16:55 1912C#之int挑战Java之Integer ... -
是 String , StringBuffer 还是 StringBuilder ?
2010-07-06 09:39 1145相信大家对 String 和 StringBuffer 的 ... -
选择抽象类还是接口
2010-07-06 09:33 1119Java接口与Java抽象类的区别: 1. Ja ... -
JAVA程序员葵花宝典
2010-03-31 08:54 1239话不多说,先下载再说^^ -
Struts2笔记 - 10 自定义类型转换器
2010-02-10 17:05 1045package struts2.demo.action; ... -
Struts2笔记 - 09 请求参数的接收
2010-02-10 15:21 1441采用基本类型接收请求参数(get/post)在Action类中 ... -
Struts2笔记 - 08配置多个Struts配置文件
2010-02-10 14:54 1158动态方法调用和使用通配符定义 由请求参数指定调用action ... -
Struts2笔记 - 07 配置多个Struts配置文件
2010-02-08 16:13 1019配置多个Struts配置文件 <struts> ...
相关推荐
项目描述 说明: spring security 全注解式的权限管理 动态配置权限,角色和资源,权限控制到...Springboot+Mybatis+ SpringMvc+springsecrity+Redis+bootstrap+jquery 数据库文件 压缩包内 jar包文件 maven搭建
在实际开发中,为了实现多数据源的切换,我们可以使用Spring的AbstractRoutingDataSource类,自定义一个动态数据源类,根据业务逻辑或配置选择使用哪个数据源。在Service层或DAO层,通过注解或编程方式指定数据源,...
基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + SpringMvc + Mybatis + Shiro+ Redis 开发单点登录管理系统 基于 SpringBoot + Spring + ...
总的来说,"struts2+spring+mybatis+easyui"的实现是一个标准的Java Web项目结构,它利用Maven进行构建管理,通过整合四个组件,实现了后端的业务逻辑处理、数据访问和前端的用户界面展示。这种架构在实际开发中具有...
完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统(RESTful API+redis).zip 完善的Spring+SpringMVC+Mybatis+easyUI后台管理系统...
本配置示例将详细介绍如何在Spring Boot中整合MyBatis与Oracle数据库,并配置两个不同的数据源。 首先,我们需要理解数据源(DataSource)的概念。数据源是Java应用程序与数据库之间的桥梁,它负责管理数据库连接,...
基于SpringBoot + Mybatis + Spring Security + Semantic UI 的图书管理系统源码 基于SpringBoot + Mybatis + Spring Security + Semantic UI 的图书管理系统源码 基于SpringBoot + Mybatis + Spring Security...
总结,Spring Boot结合Mybatis和Druid实现多数据源配置的过程包括:配置数据源、配置Mybatis、创建数据源切换器、以及针对不同数据库的测试。这一过程涉及了Spring Boot的自动配置、依赖注入、配置属性绑定等多个...
在本项目中,我们将探讨如何利用MyBatis与Spring框架实现动态切换数据源的功能。首先,我们需要理解MyBatis和Spring的基本概念以及它们如何协同工作。 MyBatis是一个优秀的持久层框架,它简化了Java与数据库之间的...
基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis+Maven项目案例 基于SpringMVC+Spring+MyBatis...
这是一个基于Java技术栈的完整网站后台管理系统,主要利用了Spring Boot、MyBatis、Spring MVC、Spring Security和Redis等核心技术。下面将详细讲解这些技术及其在系统中的作用。 首先,Spring Boot是Spring框架的...
本项目框架“maven+springMVC+mybatis+velocity+mysql+junit”提供了一种高效、灵活且可维护的解决方案。以下将详细讲解这些组件及其作用。 1. Maven: Maven是一个项目管理工具,用于构建、依赖管理和项目信息...
springboot+mybatis+druid(SQL监控+Spring监控), 单数据源配置+多数据配置两种, 单数据源中添加日志打印,对日志进行了不同环境的判断,mybatis有注解和xml两种形式的配置。
springboot+mybatis+mysql+AbstractRoutingDataSource实现多数据源切换(一写多读数据源)项目中包含完整的demo案例配备文档说明,亲测可用;实现简单,代码思路清晰.
Maven+Spring+Spring MVC+MyBatis+MySQL,搭建SSM框架环境
本项目是关于"activiti+spring+spring Mvc+mybatis+maven"的整合,旨在创建一个基于Activiti工作流引擎、Spring、Spring MVC、MyBatis以及Maven的开发环境。下面将详细介绍这些技术及其整合过程。 首先,`activiti`...
基于SpringBoot + MyBatis + Layui的后台权限管理系统。代码简洁易懂、界面美观大方,内部封装了权限管理系统常用的全部功能,可直接作为快速开发JavaWeb项目的脚手架使用。 基于SpringBoot + MyBatis + Layui的...
Spring Batch是一个轻量级的,完全面向Spring的批处理框架,可以应用于企业级大量的数据处理系统。Spring Batch以POJO和大家熟知的Spring框架为基础,使开发者更容易的访问和利用企业级服务。Spring Batch可以提供...
"Mybatis+Spring+SpringMVC+quartz多数据源切换"的架构设计就是为了满足这样的场景。这个项目结合了四个关键的技术组件,它们分别是Mybatis、Spring、SpringMVC和Quartz,下面将详细介绍这些技术以及它们在多数据源...
Spring Boot + MyBatis + Druid + PageHelper 实现多数据源并分页