Commit 08950868 by qiuweili123

删除spring依赖

parent 91bd9e4d
......@@ -2,14 +2,13 @@ package com.secoo.mall.datasource.bean;
import com.secoo.mall.common.core.exception.BusinessException;
import com.secoo.mall.datasource.errorcode.DataSourceError;
import com.secoo.mall.datasource.factory.ServiceLoaderFactory;
import com.secoo.mall.datasource.provider.DataSourceProvider;
import lombok.Getter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.DisposableBean;
import org.springframework.beans.factory.InitializingBean;
import org.springframework.jdbc.datasource.AbstractDataSource;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.lang.reflect.Method;
import java.sql.Connection;
......@@ -20,13 +19,17 @@ import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
@Slf4j
public abstract class AbsDataSource extends AbstractDataSource implements InitializingBean, DisposableBean {
public abstract class AbsDataSource extends AbstractDataSource implements DisposableBean {
@Getter
private Map<String, DataSource> dataSourceMap = new HashMap<>();
private static Lock lock = new ReentrantLock();
@Resource
private DataSourceProvider dataSourceProvider;
private DataSourceProvider dataSourceProvider = ServiceLoaderFactory.getInstance(DataSourceProvider.class);
public AbsDataSource() {
loadDataSources();
}
@Override
public Connection getConnection() throws SQLException {
......@@ -52,8 +55,8 @@ public abstract class AbsDataSource extends AbstractDataSource implements Initia
throw new BusinessException(DataSourceError.DATA_SOURCE_NOT_EXIST, dsName);
}
/**
/*
***
* bean销毁
*
* @throws Exception
......@@ -75,21 +78,6 @@ public abstract class AbsDataSource extends AbstractDataSource implements Initia
log.info("datasource all closed success");
}
/**
* 数据加载
*
* @throws Exception
*/
@Override
public void afterPropertiesSet() throws Exception {
Map<String, DataSource> dataSourceMap = dataSourceProvider.loadDataSources();
for (Map.Entry<String, DataSource> dataSourceEntry : dataSourceMap.entrySet()) {
addDataSource(dataSourceEntry.getKey(), dataSourceEntry.getValue());
}
}
public void addDataSource(String dsName, DataSource dataSource) {
lock.lock();
log.info("load dataSources lock {}", dsName);
......@@ -118,5 +106,12 @@ public abstract class AbsDataSource extends AbstractDataSource implements Initia
}
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();
}
package com.secoo.mall.datasource.bean;
import lombok.Data;
import lombok.extern.slf4j.Slf4j;
import javax.sql.DataSource;
......@@ -8,11 +9,16 @@ import javax.sql.DataSource;
* 此数据源为指定数据源,支持xml进行定义
*/
@Slf4j
@Data
public class MatrixDataSource extends AbsDataSource {
private String dsName;
public MatrixDataSource(){
}
public MatrixDataSource(String dsName) {
this.dsName = dsName;
}
......
package com.secoo.mall.datasource.factory;
import com.ctrip.framework.apollo.build.ApolloInjector;
import com.ctrip.framework.apollo.util.ConfigUtil;
import com.secoo.mall.app.security.encryptor.Encryptor;
import com.secoo.mall.common.constant.CharConstant;
import com.secoo.mall.common.core.classloader.MatrixUrlClassLoader;
......@@ -7,7 +9,6 @@ import com.secoo.mall.common.core.exception.BusinessException;
import com.secoo.mall.common.util.file.IOUtil;
import com.secoo.mall.common.util.net.IpUtil;
import com.secoo.mall.common.util.string.StringUtil;
import com.secoo.mall.common.util.sys.SystemUtil;
import com.secoo.mall.datasource.constant.DataSourceConstant;
import com.secoo.mall.datasource.errorcode.DataSourceError;
import com.secoo.mall.datasource.util.SysUtil;
......@@ -21,7 +22,7 @@ import java.util.Objects;
@Slf4j
public class EncryptorFactory<T> {
private final ConfigUtil configUtil = ApolloInjector.getInstance(ConfigUtil.class);
private volatile static EncryptorFactory instance;
private Encryptor<T> encryptor;
private final String privateKey = initPrivateKey();
......@@ -59,7 +60,7 @@ public class EncryptorFactory<T> {
* @return
*/
private String initPrivateKey() {
String appId = SystemUtil.APP_ID;
String appId = configUtil.getAppId();
if (StringUtil.isEmpty(appId)) {
throw new BusinessException(DataSourceError.APP_ID_NOT_EXIST);
}
......
package com.secoo.mall.datasource.factory;
import com.ctrip.framework.foundation.internals.ServiceBootstrap;
import com.secoo.mall.common.core.exception.SystemInternalException;
import lombok.extern.slf4j.Slf4j;
import java.util.Map;
import java.util.Objects;
import java.util.concurrent.ConcurrentHashMap;
@Slf4j
public class ServiceLoaderFactory {
private static final Object lock = new Object();
//存放singleton对象的缓存
private static final Map<String, Object> singletonObjectMap = new ConcurrentHashMap<>();
public static <T> T getInstance(Class<T> clazz) {
String simpleName = clazz.getSimpleName();
Object singleObject = singletonObjectMap.get(simpleName);
if (Objects.isNull(singleObject)) {
synchronized (lock) {
singleObject = singletonObjectMap.get(simpleName);
if (Objects.isNull(singleObject)) {
try {
singleObject = ServiceBootstrap.loadFirst(clazz);
singletonObjectMap.put(simpleName, singleObject);
} catch (Throwable ex) {
log.error("getInstance e:", ex);
throw new SystemInternalException();
}
}
}
}
return (T) singleObject;
}
}
......@@ -7,8 +7,8 @@ import com.secoo.mall.datasource.config.MatrixDataSourceConfig;
import com.secoo.mall.datasource.constant.DataSourceConstant;
import com.secoo.mall.datasource.factory.DataSourceFactory;
import com.secoo.mall.datasource.factory.EncryptorFactory;
import com.secoo.mall.datasource.factory.ServiceLoaderFactory;
import javax.annotation.Resource;
import javax.sql.DataSource;
import java.lang.reflect.ParameterizedType;
import java.util.List;
......@@ -16,10 +16,8 @@ import java.util.Map;
public abstract class AbsDataSourceProvider<T extends MatrixDataSourceConfig> implements DataSourceProvider {
private Encryptor<String> encryptor;
@Resource
private DataSourceFactory dataSourceFactory;
private DataSourceFactory dataSourceFactory = ServiceLoaderFactory.getInstance(DataSourceFactory.class);
private Class<T> entryClass;
......
......@@ -3,12 +3,10 @@ package com.secoo.mall.datasource.factory;
import com.alibaba.druid.pool.DruidDataSource;
import com.secoo.mall.datasource.properties.MatrixDruidDataSourceProperties;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
import java.sql.SQLException;
@Slf4j
@Component
public class DruidDataSourceFactory extends AbsDataSourceFactory<DruidDataSource, MatrixDruidDataSourceProperties> {
private final String FREFIX = "druid.";
......
package com.secoo.mall.datasource.provider;
import com.secoo.mall.datasource.properties.MatrixDruidDataSourceProperties;
import org.springframework.stereotype.Component;
@Component
public class ApolloDruidDataSourceProvider extends ApolloDataSourceProvider<MatrixDruidDataSourceProperties> {
}
com.secoo.mall.datasource.provider.ApolloDruidDataSourceProvider
\ No newline at end of file
......@@ -43,10 +43,6 @@
<dependencies>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>common-core</artifactId>
</dependency>
<dependency>
<groupId>com.secoo.mall</groupId>
<artifactId>common-util</artifactId>
</dependency>
</dependencies>
......
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