Commit 954b6514 by 李秋伟

Merge branch 'feature_protocol' into 'master'

Feature protocol

See merge request mall/arch/matrix!46
parents 5099d354 fff260bb
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-datasource</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......@@ -17,10 +17,6 @@
<artifactId>spring-context</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.security</groupId>
<artifactId>spring-security-crypto</artifactId>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
</dependency>
......@@ -37,6 +33,10 @@
<artifactId>spring-jdbc</artifactId>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
</dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
</dependency>
......
......@@ -13,22 +13,24 @@ import javax.sql.DataSource;
import java.lang.reflect.Method;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@Slf4j
public abstract class AbsDataSource extends AbstractDataSource implements DisposableBean {
@Getter
private Map<String, DataSource> dataSourceMap = new HashMap<>();
private static Lock lock = new ReentrantLock();
private DataSourceProvider dataSourceProvider = ServiceLoaderFactory.getInstance(DataSourceProvider.class);
private static DataSourceProvider dataSourceProvider = ServiceLoaderFactory.getInstance(DataSourceProvider.class);
@Getter
private static Map<String, DataSource> dataSourceMap = dataSourceProvider.loadDataSources();
public AbsDataSource() {
loadDataSources();
}
@Override
......@@ -49,43 +51,30 @@ public abstract class AbsDataSource extends AbstractDataSource implements Dispos
*/
public DataSource getTargetDataSource(String dsName) {
//如果数据源名字为空默认取一个,此种情况可以允许不使用@SelectDataSource指定数据源
if (getDataSourceMap().containsKey(dsName)) {
return getDataSourceMap().get(dsName);
if (dataSourceMap.containsKey(dsName)) {
return dataSourceMap.get(dsName);
}
throw new BusinessException(DataSourceError.DATA_SOURCE_NOT_EXIST, dsName);
}
/*
***
* bean销毁
*
* @throws Exception
*/
@Override
public void destroy() throws Exception {
log.info("datasource start closing ....");
for (Map.Entry<String, DataSource> item : dataSourceMap.entrySet()) {
DataSource dataSource = item.getValue();
List<String> removeDsNames = getRemoveDsNames();
for (String dsName : removeDsNames) {
log.info("datasource {} start closing ....", dsName);
DataSource dataSource = dataSourceMap.get(dsName);
Class<? extends DataSource> clazz = dataSource.getClass();
try {
Method closeMethod = clazz.getDeclaredMethod("close");
closeMethod.invoke(dataSource);
} catch (NoSuchMethodException e) {
log.warn("datasource close the datasource named [{}] failed,", item.getKey());
log.warn("datasource close the datasource named [{}] failed,", dsName);
}
removeDataSource(dsName);
log.info("datasource {} closed success", dsName);
}
log.info("datasource all closed success");
}
public void addDataSource(String dsName, DataSource dataSource) {
lock.lock();
log.info("load dataSources lock {}", dsName);
if (!dataSourceMap.containsKey(dsName)) {
dataSourceMap.put(dsName, dataSource);
}
log.info("load dataSources unlock {}", dsName);
lock.unlock();
}
......@@ -101,17 +90,17 @@ public abstract class AbsDataSource extends AbstractDataSource implements Dispos
dataSourceMap.remove(dsName);
}
log.info("remove dataSources unlock {}", dsName);
lock.unlock();
}
private void loadDataSources() {
Map<String, DataSource> dataSourceMap = dataSourceProvider.loadDataSources();
for (Map.Entry<String, DataSource> dataSourceEntry : dataSourceMap.entrySet()) {
addDataSource(dataSourceEntry.getKey(), dataSourceEntry.getValue());
}
}
protected abstract DataSource getDataSource();
/**
* 确定要清除的数据源名称
*
* @return
*/
protected abstract List<String> getRemoveDsNames();
}
......@@ -4,6 +4,8 @@ import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import javax.sql.DataSource;
import java.util.Arrays;
import java.util.List;
/**
* 此数据源为指定数据源,支持xml进行定义
......@@ -15,7 +17,7 @@ public class MatrixDataSource extends AbsDataSource {
private String dsName;
public MatrixDataSource(){
public MatrixDataSource() {
}
......@@ -27,4 +29,11 @@ public class MatrixDataSource extends AbsDataSource {
protected DataSource getDataSource() {
return getTargetDataSource(this.dsName);
}
@Override
protected List<String> getRemoveDsNames() {
return Arrays.asList(dsName);
}
}
......@@ -4,6 +4,8 @@ import com.secoo.mall.datasource.holder.DataSourceContextHolder;
import lombok.extern.slf4j.Slf4j;
import javax.sql.DataSource;
import java.util.ArrayList;
import java.util.List;
/**
* 此数据源为支持@selectDataSource注解的多数据源使用
......@@ -25,5 +27,10 @@ public class MatrixDynamicDataSource extends AbsDataSource {
return getTargetDataSource(dsName);
}
@Override
protected List<String> getRemoveDsNames() {
return new ArrayList<>(getDataSourceMap().keySet());
}
}
......@@ -2,8 +2,6 @@ package com.secoo.mall.datasource.config;
import lombok.Data;
import java.util.Properties;
@Data
public class MatrixDataSourceConfig implements DataSourceConfig {
......
......@@ -8,7 +8,6 @@ public class MatrixDataSourceProperties extends MatrixDataSourceConfig {
public static final String PREFIX = "spring.datasource.matrix";
public MatrixDataSourceProperties() {
}
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-datasource</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......@@ -21,7 +21,7 @@
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-datasource-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-mq</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-mq</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-mybatis</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-mybatis</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......@@ -25,17 +25,17 @@
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-mybatis-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-datasource-druid</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-mybatis-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-protocol</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-protocol</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-protocol</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-protocol</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix-protocol</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......@@ -29,27 +29,27 @@
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-web-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-dubbo-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-web-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-dubbo-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<!-- Aapche Dubbo -->
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
......@@ -6,7 +6,7 @@
<groupId>com.secoo.mall</groupId>
<artifactId>matrix</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
<packaging>pom</packaging>
......@@ -46,92 +46,92 @@
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>logger-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>monitor-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>common-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>config-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>common-util</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>redis-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-datasource-druid</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-mybatis-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>mongodb-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>elasticsearch-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-rocketmq-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-rocketmq-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>openfeign-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-dubbo-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-dubbo-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-web-core</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>matrix-protocol-web-starter</artifactId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</dependency>
<dependency>
......@@ -180,6 +180,11 @@
<artifactId>guava</artifactId>
<version>20.0</version>
</dependency>
<dependency>
<groupId>org.javassist</groupId>
<artifactId>javassist</artifactId>
<version>3.26.0-GA</version>
</dependency>
<!--spring cloud-->
<dependency>
......
......@@ -5,7 +5,7 @@
<parent>
<artifactId>matrix</artifactId>
<groupId>com.secoo.mall</groupId>
<version>1.2.8.RELEASE</version>
<version>1.2.9.RELEASE</version>
</parent>
<modelVersion>4.0.0</modelVersion>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment