Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
matrix
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
CI / CD
CI / CD
Pipelines
Schedules
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Commits
Issue Boards
Open sidebar
mall
arch
matrix
Commits
2a9ba63c
Commit
2a9ba63c
authored
Dec 24, 2019
by
李秋伟
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature_protocol' into 'master'
删除spring依赖 See merge request mall/arch/matrix!42
parents
95a60897
08950868
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
71 additions
and
37 deletions
+71
-37
AbsDataSource.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/bean/AbsDataSource.java
+17
-22
MatrixDataSource.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/bean/MatrixDataSource.java
+6
-0
EncryptorFactory.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/factory/EncryptorFactory.java
+4
-3
ServiceLoaderFactory.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/factory/ServiceLoaderFactory.java
+38
-0
AbsDataSourceProvider.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/provider/AbsDataSourceProvider.java
+2
-4
DruidDataSourceFactory.java
matrix-datasource/matrix-datasource-druid/src/main/java/com/secoo/mall/datasource/factory/DruidDataSourceFactory.java
+0
-2
ApolloDruidDataSourceProvider.java
matrix-datasource/matrix-datasource-druid/src/main/java/com/secoo/mall/datasource/provider/ApolloDruidDataSourceProvider.java
+0
-2
com.secoo.mall.datasource.factory.DataSourceFactory
matrix-datasource/matrix-datasource-druid/src/main/resources/META-INF/services/com.secoo.mall.datasource.factory.DataSourceFactory
+2
-0
com.secoo.mall.datasource.provider.DataSourceProvider
matrix-datasource/matrix-datasource-druid/src/main/resources/META-INF/services/com.secoo.mall.datasource.provider.DataSourceProvider
+2
-0
pom.xml
matrix-datasource/pom.xml
+0
-4
No files found.
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/bean/AbsDataSource.java
View file @
2a9ba63c
...
...
@@ -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
();
}
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/bean/MatrixDataSource.java
View file @
2a9ba63c
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
;
}
...
...
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/factory/EncryptorFactory.java
View file @
2a9ba63c
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
);
}
...
...
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/factory/ServiceLoaderFactory.java
0 → 100644
View file @
2a9ba63c
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
;
}
}
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/provider/AbsDataSourceProvider.java
View file @
2a9ba63c
...
...
@@ -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
;
...
...
matrix-datasource/matrix-datasource-druid/src/main/java/com/secoo/mall/datasource/factory/DruidDataSourceFactory.java
View file @
2a9ba63c
...
...
@@ -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."
;
...
...
matrix-datasource/matrix-datasource-druid/src/main/java/com/secoo/mall/datasource/provider/ApolloDruidDataSourceProvider.java
View file @
2a9ba63c
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
>
{
}
matrix-datasource/matrix-datasource-druid/src/main/resources/META-INF/services/com.secoo.mall.datasource.factory.DataSourceFactory
0 → 100644
View file @
2a9ba63c
com.secoo.mall.datasource.factory.DruidDataSourceFactory
\ No newline at end of file
matrix-datasource/matrix-datasource-druid/src/main/resources/META-INF/services/com.secoo.mall.datasource.provider.DataSourceProvider
0 → 100644
View file @
2a9ba63c
com.secoo.mall.datasource.provider.ApolloDruidDataSourceProvider
\ No newline at end of file
matrix-datasource/pom.xml
View file @
2a9ba63c
...
...
@@ -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>
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment