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
63b5bcd7
Commit
63b5bcd7
authored
Dec 06, 2019
by
qiuweili123
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
数据源优化
parent
140131a7
Hide whitespace changes
Inline
Side-by-side
Showing
16 changed files
with
228 additions
and
126 deletions
+228
-126
MatrixUrlClassLoader.java
common-core/src/main/java/com/secoo/mall/common/core/classloader/MatrixUrlClassLoader.java
+4
-4
SystemUtil.java
common-util/src/main/java/com/secoo/mall/common/util/sys/SystemUtil.java
+38
-0
MatrixDynamicDataSource.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/bean/MatrixDynamicDataSource.java
+4
-5
DataSourceConstant.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/constant/DataSourceConstant.java
+0
-4
DataSourceError.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/errorCode/DataSourceError.java
+1
-1
EncryptorFactory.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/factory/EncryptorFactory.java
+5
-4
ApolloDataSourceProvider.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/provider/ApolloDataSourceProvider.java
+1
-1
SysUtil.java
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/util/SysUtil.java
+1
-11
MatrixMybatisSqlSessionFactoryBean.java
matrix-mybatis/matrix-mybatis-core/src/main/java/com/secoo/mall/mybatis/bean/MatrixMybatisSqlSessionFactoryBean.java
+26
-0
MatrixMybatisConfig.java
matrix-mybatis/matrix-mybatis-core/src/main/java/com/secoo/mall/mybatis/config/MatrixMybatisConfig.java
+41
-0
MatrixMybatisGlobalConfig.java
matrix-mybatis/matrix-mybatis-core/src/main/java/com/secoo/mall/mybatis/config/MatrixMybatisGlobalConfig.java
+42
-0
FillDefaultValueHandler.java
matrix-mybatis/matrix-mybatis-core/src/main/java/com/secoo/mall/mybatis/handler/FillDefaultValueHandler.java
+0
-1
MatrixMybatisConfiguration.java
matrix-mybatis/matrix-mybatis-starter/src/main/java/com/secoo/mall/mybatis/config/MatrixMybatisConfiguration.java
+26
-0
MybatisConfig.java
matrix-mybatis/matrix-mybatis-starter/src/main/java/com/secoo/mall/mybatis/config/MybatisConfig.java
+0
-90
MatrixMybatisAutoConfiguration.java
matrix-mybatis/matrix-mybatis-starter/src/main/java/com/secoo/mall/mybatis/spring/boot/autoconfigure/MatrixMybatisAutoConfiguration.java
+37
-3
spring.factories
matrix-mybatis/matrix-mybatis-starter/src/main/resources/META-INF/spring.factories
+2
-2
No files found.
common-core/src/main/java/com/secoo/mall/common/core/classloader/MatrixUrlClassLoader.java
View file @
63b5bcd7
...
...
@@ -10,7 +10,7 @@ import java.net.URLClassLoader;
public
class
MatrixUrlClassLoader
extends
URLClassLoader
{
private
volatile
static
MatrixUrlClassLoader
instance
;
private
static
ClassLoader
classLoader
=
MatrixUrlClassLoader
.
class
.
getClassLoader
();
private
static
final
Method
addUrl
;
private
static
final
Method
ADD_URL
;
//并行加载classLoader
static
{
...
...
@@ -20,8 +20,8 @@ public class MatrixUrlClassLoader extends URLClassLoader {
//初始化添加资源
static
{
try
{
addUrl
=
URLClassLoader
.
class
.
getDeclaredMethod
(
"addURL"
,
URL
.
class
);
addUrl
.
setAccessible
(
true
);
ADD_URL
=
URLClassLoader
.
class
.
getDeclaredMethod
(
"addURL"
,
URL
.
class
);
ADD_URL
.
setAccessible
(
true
);
}
catch
(
NoSuchMethodException
e
)
{
e
.
printStackTrace
();
throw
new
SystemInternalException
();
...
...
@@ -47,7 +47,7 @@ public class MatrixUrlClassLoader extends URLClassLoader {
public
void
loadByUrl
(
String
urlStr
)
{
try
{
URL
url
=
new
URL
(
urlStr
);
addUrl
.
invoke
(
classLoader
,
url
);
ADD_URL
.
invoke
(
classLoader
,
url
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
throw
new
SystemInternalException
();
...
...
common-util/src/main/java/com/secoo/mall/common/util/sys/SystemUtil.java
0 → 100644
View file @
63b5bcd7
package
com
.
secoo
.
mall
.
common
.
util
.
sys
;
import
com.secoo.mall.common.constant.CommonConstant
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.SystemUtils
;
@Slf4j
public
class
SystemUtil
extends
SystemUtils
{
/**
* -Dapp.id=demo
*/
private
static
final
String
APP_ID_KEY
=
"app.id"
;
/**
* -Denv=pro
*/
private
static
final
String
ENV_KEY
=
"env"
;
/**
* 系统唯一标识
*/
public
static
final
String
APP_ID
=
getSystemProperty
(
APP_ID_KEY
,
""
);
/**
* 环境变量
*/
public
static
final
String
ENV
=
getSystemProperty
(
ENV_KEY
,
"pro"
);
private
static
String
getSystemProperty
(
final
String
property
,
String
defaultValue
)
{
try
{
return
System
.
getProperty
(
property
,
defaultValue
);
}
catch
(
final
SecurityException
e
)
{
log
.
error
(
"Caught a SecurityException reading the system property '"
+
property
+
"'; the SystemUtils property value will default to null."
,
e
);
return
null
;
}
}
}
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/bean/MatrixDynamicDataSource.java
View file @
63b5bcd7
...
...
@@ -2,7 +2,7 @@ package com.secoo.mall.datasource.bean;
import
com.secoo.mall.common.core.exception.BusinessException
;
import
com.secoo.mall.common.util.string.StringUtil
;
import
com.secoo.mall.datasource.error
C
ode.DataSourceError
;
import
com.secoo.mall.datasource.error
c
ode.DataSourceError
;
import
com.secoo.mall.datasource.holder.DataSourceContextHolder
;
import
com.secoo.mall.datasource.provider.DataSourceProvider
;
import
lombok.Data
;
...
...
@@ -41,7 +41,9 @@ public class MatrixDynamicDataSource extends AbsDynamicDataSource implements Ini
*/
protected
DataSource
getDataSource
()
{
String
dsName
=
StringUtil
.
isEmpty
(
getDsName
())
?
DataSourceContextHolder
.
getDs
()
:
getDsName
();
log
.
info
(
"cur ds is {}"
,
dsName
);
if
(
log
.
isDebugEnabled
())
{
log
.
debug
(
"cur ds is {}"
,
dsName
);
}
return
getTargetDataSource
(
dsName
);
}
...
...
@@ -53,9 +55,6 @@ public class MatrixDynamicDataSource extends AbsDynamicDataSource implements Ini
*/
private
DataSource
getTargetDataSource
(
String
dsName
)
{
//如果数据源名字为空默认取一个,此种情况可以允许不使用@SelectDataSource指定数据源
/* if (dsName == null) {
dsName = dataSourceMap.keySet().iterator().next();
}*/
if
(
dataSourceMap
.
containsKey
(
dsName
))
{
return
dataSourceMap
.
get
(
dsName
);
}
...
...
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/constant/DataSourceConstant.java
View file @
63b5bcd7
...
...
@@ -29,10 +29,6 @@ public interface DataSourceConstant {
*/
String
ENCRY_FLAG
=
"###"
;
/**
* 应用唯一标识
*/
String
APP_ID
=
"app.id"
;
/**
* http访问超时时间。10S
*/
Long
HTTP_CONNETION_TIME_COUT
=
TimeUnit
.
SECONDS
.
toMillis
(
10L
);
...
...
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/errorCode/DataSourceError.java
View file @
63b5bcd7
package
com
.
secoo
.
mall
.
datasource
.
error
C
ode
;
package
com
.
secoo
.
mall
.
datasource
.
error
c
ode
;
import
com.secoo.mall.common.core.errorcode.ErrorCode
;
...
...
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/factory/EncryptorFactory.java
View file @
63b5bcd7
...
...
@@ -7,8 +7,9 @@ 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.error
C
ode.DataSourceError
;
import
com.secoo.mall.datasource.error
c
ode.DataSourceError
;
import
com.secoo.mall.datasource.util.SysUtil
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -58,7 +59,7 @@ public class EncryptorFactory<T> {
* @return
*/
private
String
initPrivateKey
()
{
String
appId
=
System
.
getProperty
(
DataSourceConstant
.
APP_ID
)
;
String
appId
=
System
Util
.
APP_ID
;
if
(
StringUtil
.
isEmpty
(
appId
))
{
throw
new
BusinessException
(
DataSourceError
.
APP_ID_NOT_EXIST
);
}
...
...
@@ -68,9 +69,9 @@ public class EncryptorFactory<T> {
URL
url
=
new
URL
(
String
.
format
(
DataSourceConstant
.
APP_SALT_KEY_PATH
,
appId
));
connection
=
(
HttpURLConnection
)
url
.
openConnection
();
connection
.
setRequestMethod
(
"GET"
);
connection
.
addRequestProperty
(
DataSourceConstant
.
APP_ID
,
appId
);
connection
.
addRequestProperty
(
"appId"
,
appId
);
connection
.
addRequestProperty
(
"accessToken"
,
SysUtil
.
getProperty
(
"accessToken"
));
connection
.
addRequestProperty
(
"hostI
P
"
,
IpUtil
.
getHostIp
());
connection
.
addRequestProperty
(
"hostI
p
"
,
IpUtil
.
getHostIp
());
connection
.
addRequestProperty
(
"hostName"
,
IpUtil
.
getHostName
());
connection
.
setConnectTimeout
(
DataSourceConstant
.
HTTP_CONNETION_TIME_COUT
.
intValue
());
connection
.
connect
();
...
...
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/provider/ApolloDataSourceProvider.java
View file @
63b5bcd7
...
...
@@ -7,7 +7,7 @@ import com.secoo.mall.common.core.exception.BusinessException;
import
com.secoo.mall.common.util.colletion.CollectionUtil
;
import
com.secoo.mall.common.util.string.StringUtil
;
import
com.secoo.mall.datasource.constant.DataSourceConstant
;
import
com.secoo.mall.datasource.error
C
ode.DataSourceError
;
import
com.secoo.mall.datasource.error
c
ode.DataSourceError
;
import
com.secoo.mall.datasource.properties.MatrixDataSourceProperties
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.reflect.MethodUtils
;
...
...
matrix-datasource/matrix-datasource-core/src/main/java/com/secoo/mall/datasource/util/SysUtil.java
View file @
63b5bcd7
...
...
@@ -10,21 +10,11 @@ public class SysUtil {
private
static
Properties
properties
=
new
Properties
();
public
static
void
setProperty
(
String
key
,
String
value
)
{
/* try {
PropertyUtils.setProperty(HashMap.class, key, value);
} catch (Exception e) {
log.error("set property", e);
}*/
properties
.
setProperty
(
key
,
value
);
}
public
static
String
getProperty
(
String
key
)
{
/* try {
Object property = PropertyUtils.getProperty(HashMap.class, key);
return (T) PropertyUtils.getProperty(HashMap.class, key);
} catch (Exception e) {
log.error("set property", e);
}*/
return
properties
.
getProperty
(
key
);
}
}
matrix-mybatis/matrix-mybatis-core/src/main/java/com/secoo/mall/mybatis/bean/MatrixMybatisSqlSessionFactoryBean.java
0 → 100644
View file @
63b5bcd7
package
com
.
secoo
.
mall
.
mybatis
.
bean
;
import
com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean
;
import
com.secoo.mall.mybatis.config.MatrixMybatisConfig
;
import
com.secoo.mall.mybatis.config.MatrixMybatisGlobalConfig
;
import
org.springframework.core.io.support.PathMatchingResourcePatternResolver
;
import
java.io.IOException
;
public
class
MatrixMybatisSqlSessionFactoryBean
extends
MybatisSqlSessionFactoryBean
{
public
MatrixMybatisSqlSessionFactoryBean
(){
}
public
MatrixMybatisSqlSessionFactoryBean
(
MatrixMybatisConfig
matrixMybatisConfig
,
MatrixMybatisGlobalConfig
matrixMybatisGlobalConfig
)
{
this
.
setConfiguration
(
matrixMybatisConfig
);
this
.
setGlobalConfig
(
matrixMybatisGlobalConfig
);
this
.
setTypeAliasesPackage
(
matrixMybatisConfig
.
getBeanAliasPackages
());
try
{
this
.
setMapperLocations
(
new
PathMatchingResourcePatternResolver
().
getResources
(
matrixMybatisConfig
.
getResourceClassPath
()));
}
catch
(
IOException
e
)
{
e
.
printStackTrace
();
}
}
}
matrix-mybatis/matrix-mybatis-core/src/main/java/com/secoo/mall/mybatis/config/MatrixMybatisConfig.java
0 → 100644
View file @
63b5bcd7
package
com
.
secoo
.
mall
.
mybatis
.
config
;
import
com.baomidou.mybatisplus.core.MybatisConfiguration
;
import
com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor
;
import
com.baomidou.mybatisplus.extension.toolkit.PackageHelper
;
import
com.secoo.mall.common.constant.CommonConstant
;
import
com.secoo.mall.common.util.string.StringUtil
;
import
com.secoo.mall.common.util.sys.SystemUtil
;
import
lombok.Data
;
import
org.apache.ibatis.type.JdbcType
;
@Data
public
class
MatrixMybatisConfig
extends
MybatisConfiguration
{
private
String
beanAliasPackages
=
StringUtil
.
join
(
PackageHelper
.
convertTypeAliasesPackage
(
"com.secoo.mall.**.bean.domain"
),
","
);
private
String
resourceClassPath
=
"classpath:mybatis/*.xml"
;
public
MatrixMybatisConfig
()
{
if
(!
SystemUtil
.
ENV
.
equals
(
CommonConstant
.
Env
.
PRO
))
{
this
.
addInterceptor
(
new
PerformanceInterceptor
());
}
//空值转为null
this
.
setJdbcTypeForNull
(
JdbcType
.
NULL
);
// 驼峰转下划线
this
.
setMapUnderscoreToCamelCase
(
true
);
//分页插件
this
.
addInterceptor
(
new
PaginationInterceptor
());
this
.
setBeanAliasPackages
(
beanAliasPackages
);
this
.
setResourceClassPath
(
resourceClassPath
);
}
public
MatrixMybatisConfig
(
String
beanAliasPackages
,
String
resourceClassPath
)
{
this
();
this
.
setBeanAliasPackages
(
beanAliasPackages
);
this
.
setResourceClassPath
(
resourceClassPath
);
}
}
matrix-mybatis/matrix-mybatis-core/src/main/java/com/secoo/mall/mybatis/config/MatrixMybatisGlobalConfig.java
0 → 100644
View file @
63b5bcd7
package
com
.
secoo
.
mall
.
mybatis
.
config
;
import
com.baomidou.mybatisplus.annotation.DbType
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.core.config.GlobalConfig
;
import
com.baomidou.mybatisplus.core.handlers.MetaObjectHandler
;
import
com.secoo.mall.mybatis.handler.FillDefaultValueHandler
;
import
lombok.Setter
;
import
java.util.Objects
;
@Setter
public
class
MatrixMybatisGlobalConfig
extends
GlobalConfig
{
/**
* 增加全局默认的配置
*/
public
MatrixMybatisGlobalConfig
()
{
this
.
setMetaObjectHandler
(
getFillDefaultValueHandler
());
this
.
setDbConfig
(
getDbConfig
());
}
public
DbConfig
getDefaultDbConfig
()
{
if
(
Objects
.
isNull
(
getDbConfig
()))
{
return
createDefaultDbConfig
();
}
return
getDbConfig
();
}
public
MetaObjectHandler
getFillDefaultValueHandler
()
{
return
Objects
.
isNull
(
this
.
getMetaObjectHandler
())
?
new
FillDefaultValueHandler
()
:
this
.
getMetaObjectHandler
();
}
private
DbConfig
createDefaultDbConfig
()
{
DbConfig
dbConfig
=
new
DbConfig
();
dbConfig
.
setIdType
(
IdType
.
AUTO
);
dbConfig
.
setDbType
(
DbType
.
MYSQL
);
return
dbConfig
;
}
}
matrix-mybatis/matrix-mybatis-core/src/main/java/com/secoo/mall/mybatis/handler/FillDefaultValueHandler.java
View file @
63b5bcd7
...
...
@@ -6,7 +6,6 @@ import org.springframework.stereotype.Component;
import
java.util.Date
;
@Component
public
class
FillDefaultValueHandler
implements
MetaObjectHandler
{
@Override
public
void
insertFill
(
MetaObject
metaObject
)
{
...
...
matrix-mybatis/matrix-mybatis-starter/src/main/java/com/secoo/mall/mybatis/config/MatrixMybatisConfiguration.java
0 → 100644
View file @
63b5bcd7
package
com
.
secoo
.
mall
.
mybatis
.
config
;
import
com.secoo.mall.mybatis.bean.MatrixMybatisSqlSessionFactoryBean
;
import
com.secoo.mall.mybatis.spring.boot.autoconfigure.MatrixMybatisAutoConfiguration
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
javax.sql.DataSource
;
//@Configuration
//@AutoConfigureAfter(MatrixMybatisAutoConfiguration.class)
public
class
MatrixMybatisConfiguration
{
/* @Bean
@ConditionalOnMissingBean(SqlSessionFactory.class)
public SqlSessionFactory sqlSessionFactory(DataSource dataSource,MatrixMybatisConfig matrixMybatisConfig,MatrixMybatisGlobalConfig matrixMybatisGlobalConfig) throws Exception {
MatrixMybatisSqlSessionFactoryBean sqlSessionFactory = new MatrixMybatisSqlSessionFactoryBean(matrixMybatisConfig,matrixMybatisGlobalConfig);
*//* sqlSessionFactory.setGlobalConfig(matrixMybatisGlobalConfig());
sqlSessionFactory.setConfiguration(matrixMybatisConfig());*//*
sqlSessionFactory.setDataSource(dataSource);
return sqlSessionFactory.getObject();
}*/
}
matrix-mybatis/matrix-mybatis-starter/src/main/java/com/secoo/mall/mybatis/config/MybatisConfig.java
deleted
100644 → 0
View file @
140131a7
package
com
.
secoo
.
mall
.
mybatis
.
config
;
import
com.baomidou.mybatisplus.annotation.DbType
;
import
com.baomidou.mybatisplus.annotation.IdType
;
import
com.baomidou.mybatisplus.core.MybatisConfiguration
;
import
com.baomidou.mybatisplus.core.config.GlobalConfig
;
import
com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor
;
import
com.baomidou.mybatisplus.extension.plugins.PerformanceInterceptor
;
import
com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean
;
import
com.baomidou.mybatisplus.extension.toolkit.PackageHelper
;
import
com.secoo.mall.common.constant.CommonConstant
;
import
com.secoo.mall.common.util.string.StringUtil
;
import
com.secoo.mall.mybatis.handler.FillDefaultValueHandler
;
import
com.secoo.mall.mybatis.spring.boot.autoconfigure.MatrixDataSouceAutoConfiguration
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.apache.ibatis.type.JdbcType
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.Import
;
import
org.springframework.core.io.support.PathMatchingResourcePatternResolver
;
import
javax.sql.DataSource
;
import
java.util.List
;
import
java.util.stream.Collectors
;
import
java.util.stream.Stream
;
@Configuration
@Import
(
MatrixDataSouceAutoConfiguration
.
class
)
public
class
MybatisConfig
{
@Value
(
"${spring.profiles.active}"
)
private
String
profile
;
/* @Resource
private MybatisPlusProperties mybatisPlusProperties;*/
@Bean
public
SqlSessionFactory
sqlSessionFactory
(
DataSource
dataSource
,
GlobalConfig
globalConfig
)
throws
Exception
{
MybatisSqlSessionFactoryBean
sqlSessionFactory
=
new
MybatisSqlSessionFactoryBean
();
String
[]
aliasesPackages
=
PackageHelper
.
convertTypeAliasesPackage
(
"com.secoo.mall.**.bean.domain"
);
globalConfig
.
getDbConfig
().
setDbType
(
DbType
.
MYSQL
);
List
<
String
>
list
=
Stream
.
of
(
aliasesPackages
).
collect
(
Collectors
.
toList
());
/*文件包别名加载*/
sqlSessionFactory
.
setTypeAliasesPackage
(
StringUtil
.
join
(
list
,
","
));
/*配置文件*/
sqlSessionFactory
.
setMapperLocations
(
new
PathMatchingResourcePatternResolver
().
getResources
(
"classpath:mybatis/*.xml"
));
/* 数据源 */
sqlSessionFactory
.
setDataSource
(
dataSource
);
/* entity扫描,mybatis的Alias功能 */
MybatisConfiguration
configuration
=
new
MybatisConfiguration
();
configuration
.
setJdbcTypeForNull
(
JdbcType
.
NULL
);
/* 驼峰转下划线 */
configuration
.
setMapUnderscoreToCamelCase
(
true
);
/* 分页插件 */
configuration
.
addInterceptor
(
new
PaginationInterceptor
());
/* 乐观锁插件 */
// configuration.addInterceptor(new OptimisticLockerInterceptor());
//非生产环境加载的插件
if
(!
CommonConstant
.
Env
.
PRO
.
equals
(
profile
))
{
configuration
.
addInterceptor
(
new
PerformanceInterceptor
());
}
sqlSessionFactory
.
setConfiguration
(
configuration
);
/* 自动填充插件 */
globalConfig
.
setMetaObjectHandler
(
new
FillDefaultValueHandler
());
sqlSessionFactory
.
setGlobalConfig
(
globalConfig
);
return
sqlSessionFactory
.
getObject
();
}
@Bean
public
GlobalConfig
globalConfig
()
{
GlobalConfig
conf
=
new
GlobalConfig
();
GlobalConfig
.
DbConfig
dbConfig
=
new
GlobalConfig
.
DbConfig
();
dbConfig
.
setIdType
(
IdType
.
AUTO
);
conf
.
setDbConfig
(
dbConfig
);
return
conf
;
}
@Bean
public
PerformanceInterceptor
performanceInterceptor
()
{
return
new
PerformanceInterceptor
();
}
}
matrix-mybatis/matrix-mybatis-starter/src/main/java/com/secoo/mall/mybatis/spring/boot/autoconfigure/Matrix
DataSouce
AutoConfiguration.java
→
matrix-mybatis/matrix-mybatis-starter/src/main/java/com/secoo/mall/mybatis/spring/boot/autoconfigure/Matrix
Mybatis
AutoConfiguration.java
View file @
63b5bcd7
package
com
.
secoo
.
mall
.
mybatis
.
spring
.
boot
.
autoconfigure
;
import
com.baomidou.mybatisplus.autoconfigure.MybatisPlusAutoConfiguration
;
import
com.baomidou.mybatisplus.extension.toolkit.PackageHelper
;
import
com.ctrip.framework.apollo.spring.boot.ApolloAutoConfiguration
;
import
com.secoo.mall.common.util.string.StringUtil
;
import
com.secoo.mall.datasource.bean.MatrixDataSource
;
import
com.secoo.mall.datasource.bean.MatrixDynamicDataSource
;
import
com.secoo.mall.datasource.provider.ApolloDataSourceProvider
;
import
com.secoo.mall.datasource.provider.DataSourceProvider
;
import
com.secoo.mall.datasource.util.SysUtil
;
import
com.secoo.mall.mybatis.bean.MatrixMybatisSqlSessionFactoryBean
;
import
com.secoo.mall.mybatis.config.MatrixMybatisConfig
;
import
com.secoo.mall.mybatis.config.MatrixMybatisGlobalConfig
;
import
lombok.Setter
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.ibatis.session.SqlSessionFactory
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.autoconfigure.AutoConfigureAfter
;
import
org.springframework.boot.autoconfigure.AutoConfigureBefore
;
...
...
@@ -17,20 +24,22 @@ import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import
org.springframework.boot.context.properties.EnableConfigurationProperties
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.io.support.PathMatchingResourcePatternResolver
;
import
javax.sql.DataSource
;
@Configuration
@ConditionalOnClass
(
MatrixDataSource
.
class
)
@AutoConfigureBefore
(
DataSourceAutoConfiguration
.
class
)
@AutoConfigureBefore
(
{
DataSourceAutoConfiguration
.
class
,
MybatisPlusAutoConfiguration
.
class
}
)
@AutoConfigureAfter
(
ApolloAutoConfiguration
.
class
)
@EnableConfigurationProperties
({
MatrixDefaultDataSourceProperties
.
class
})
//@Import(MatrixMybatisAutoConfiguration.class)
@Slf4j
public
class
Matrix
DataSouce
AutoConfiguration
{
public
class
Matrix
Mybatis
AutoConfiguration
{
@Setter
private
MatrixDefaultDataSourceProperties
matrixDefaultDataSourceProperties
;
public
Matrix
DataSouce
AutoConfiguration
()
{
public
Matrix
Mybatis
AutoConfiguration
()
{
log
.
info
(
"Init MatrixDataSouceAutoConfiguration"
);
}
...
...
@@ -54,4 +63,29 @@ public class MatrixDataSouceAutoConfiguration {
public
DataSource
dataSource
()
{
return
new
MatrixDynamicDataSource
(
"default"
);
}
@Bean
@ConditionalOnMissingBean
(
SqlSessionFactory
.
class
)
public
SqlSessionFactory
sqlSessionFactory
(
DataSource
dataSource
,
MatrixMybatisConfig
matrixMybatisConfig
,
MatrixMybatisGlobalConfig
matrixMybatisGlobalConfig
)
throws
Exception
{
MatrixMybatisSqlSessionFactoryBean
sqlSessionFactory
=
new
MatrixMybatisSqlSessionFactoryBean
(
matrixMybatisConfig
,
matrixMybatisGlobalConfig
);
sqlSessionFactory
.
setDataSource
(
dataSource
);
return
sqlSessionFactory
.
getObject
();
}
@Bean
@ConditionalOnMissingBean
(
MatrixMybatisGlobalConfig
.
class
)
public
MatrixMybatisGlobalConfig
matrixMybatisGlobalConfig
()
{
MatrixMybatisGlobalConfig
globalConfig
=
new
MatrixMybatisGlobalConfig
();
return
globalConfig
;
}
@Bean
@ConditionalOnMissingBean
(
MatrixMybatisConfig
.
class
)
public
MatrixMybatisConfig
matrixMybatisConfig
()
{
MatrixMybatisConfig
config
=
new
MatrixMybatisConfig
();
return
config
;
}
}
matrix-mybatis/matrix-mybatis-starter/src/main/resources/META-INF/spring.factories
View file @
63b5bcd7
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.secoo.mall.mybatis.spring.boot.autoconfigure.MatrixDataSouceAutoConfiguration
\ No newline at end of file
com.secoo.mall.mybatis.spring.boot.autoconfigure.MatrixMybatisAutoConfiguration
\ No newline at end of file
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