Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
guns-vip
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenjunxiong
guns-vip
Commits
c4694d96
Commit
c4694d96
authored
Aug 17, 2017
by
stylefeng
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
整合core的多数据源
parent
9cb81691
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
52 additions
and
227 deletions
+52
-227
guns-admin/pom.xml
+1
-19
guns-admin/src/main/java/com/stylefeng/guns/common/annotion/DataSource.java
+0
-18
guns-admin/src/main/java/com/stylefeng/guns/config/MybatisPlusConfig.java
+2
-2
guns-admin/src/main/java/com/stylefeng/guns/config/properties/MutiDataSourceProperties.java
+0
-52
guns-admin/src/main/java/com/stylefeng/guns/core/aop/MultiSourceExAop.java
+0
-79
guns-admin/src/main/java/com/stylefeng/guns/core/mutidatesource/DataSourceContextHolder.java
+0
-35
guns-admin/src/main/java/com/stylefeng/guns/core/mutidatesource/DynamicDataSource.java
+0
-19
guns-admin/src/main/java/com/stylefeng/guns/modular/biz/service/impl/TestServiceImpl.java
+1
-1
guns-admin/src/main/resources/application.yml
+3
-2
guns-core/pom.xml
+4
-0
guns-core/src/main/java/com/stylefeng/guns/core/mutidatasource/config/MutiDataSourceProperties.java
+41
-0
No files found.
guns-admin/pom.xml
View file @
c4694d96
...
@@ -18,8 +18,6 @@
...
@@ -18,8 +18,6 @@
<name>
guns-admin
</name>
<name>
guns-admin
</name>
<description>
guns 的spring boot版本
</description>
<description>
guns 的spring boot版本
</description>
<dependencies>
<dependencies>
<dependency>
<dependency>
<groupId>
com.stylefeng
</groupId>
<groupId>
com.stylefeng
</groupId>
...
@@ -44,14 +42,6 @@
...
@@ -44,14 +42,6 @@
<artifactId>
spring-boot-starter-cache
</artifactId>
<artifactId>
spring-boot-starter-cache
</artifactId>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatisplus-spring-boot-starter
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-jdbc
</artifactId>
</dependency>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-validation
</artifactId>
<artifactId>
spring-boot-starter-validation
</artifactId>
</dependency>
</dependency>
...
@@ -101,21 +91,13 @@
...
@@ -101,21 +91,13 @@
<dependency>
<dependency>
<groupId>org.springframework.session</groupId>
<groupId>org.springframework.session</groupId>
<artifactId>spring-session</artifactId>
<artifactId>spring-session</artifactId>
</dependency>
-->
<dependency>
<groupId>
com.baomidou
</groupId>
<artifactId>
mybatis-plus
</artifactId>
</dependency>
</dependency>
-->
<dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<groupId>
com.alibaba
</groupId>
<artifactId>
fastjson
</artifactId>
<artifactId>
fastjson
</artifactId>
</dependency>
</dependency>
<dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid
</artifactId>
</dependency>
<dependency>
<groupId>
commons-io
</groupId>
<groupId>
commons-io
</groupId>
<artifactId>
commons-io
</artifactId>
<artifactId>
commons-io
</artifactId>
</dependency>
</dependency>
...
...
guns-admin/src/main/java/com/stylefeng/guns/common/annotion/DataSource.java
deleted
100644 → 0
View file @
9cb81691
package
com
.
stylefeng
.
guns
.
common
.
annotion
;
import
java.lang.annotation.*
;
/**
*
* 多数据源标识
*
* @author fengshuonan
* @date 2017年3月5日 上午9:44:24
*/
@Inherited
@Retention
(
RetentionPolicy
.
RUNTIME
)
@Target
({
ElementType
.
METHOD
})
public
@interface
DataSource
{
String
name
()
default
""
;
}
guns-admin/src/main/java/com/stylefeng/guns/config/MybatisPlusConfig.java
View file @
c4694d96
...
@@ -4,9 +4,9 @@ import com.alibaba.druid.pool.DruidDataSource;
...
@@ -4,9 +4,9 @@ import com.alibaba.druid.pool.DruidDataSource;
import
com.baomidou.mybatisplus.plugins.PaginationInterceptor
;
import
com.baomidou.mybatisplus.plugins.PaginationInterceptor
;
import
com.stylefeng.guns.common.constant.DSEnum
;
import
com.stylefeng.guns.common.constant.DSEnum
;
import
com.stylefeng.guns.config.properties.DruidProperties
;
import
com.stylefeng.guns.config.properties.DruidProperties
;
import
com.stylefeng.guns.config.properties.MutiDataSourceProperties
;
import
com.stylefeng.guns.core.datascope.DataScopeInterceptor
;
import
com.stylefeng.guns.core.datascope.DataScopeInterceptor
;
import
com.stylefeng.guns.core.mutidatesource.DynamicDataSource
;
import
com.stylefeng.guns.core.mutidatasource.DynamicDataSource
;
import
com.stylefeng.guns.core.mutidatasource.config.MutiDataSourceProperties
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.mybatis.spring.annotation.MapperScan
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
...
...
guns-admin/src/main/java/com/stylefeng/guns/config/properties/MutiDataSourceProperties.java
deleted
100644 → 0
View file @
9cb81691
package
com
.
stylefeng
.
guns
.
config
.
properties
;
import
com.alibaba.druid.pool.DruidDataSource
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
/**
* 多数据源的配置
*
* @author stylefeng
* @Date 2017/6/23 23:05
*/
@Component
@ConfigurationProperties
(
prefix
=
"biz.datasource"
)
public
class
MutiDataSourceProperties
{
private
String
url
=
"jdbc:mysql://127.0.0.1:3306/biz?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull"
;
private
String
username
=
"root"
;
private
String
password
=
"root"
;
public
void
config
(
DruidDataSource
dataSource
)
{
dataSource
.
setUrl
(
url
);
dataSource
.
setUsername
(
username
);
dataSource
.
setPassword
(
password
);
}
public
String
getUrl
()
{
return
url
;
}
public
void
setUrl
(
String
url
)
{
this
.
url
=
url
;
}
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
}
guns-admin/src/main/java/com/stylefeng/guns/core/aop/MultiSourceExAop.java
deleted
100644 → 0
View file @
9cb81691
package
com
.
stylefeng
.
guns
.
core
.
aop
;
import
com.stylefeng.guns.common.annotion.DataSource
;
import
com.stylefeng.guns.common.constant.DSEnum
;
import
com.stylefeng.guns.core.mutidatesource.DataSourceContextHolder
;
import
org.aspectj.lang.ProceedingJoinPoint
;
import
org.aspectj.lang.Signature
;
import
org.aspectj.lang.annotation.Around
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.boot.autoconfigure.condition.ConditionalOnProperty
;
import
org.springframework.core.Ordered
;
import
org.springframework.stereotype.Component
;
import
java.lang.reflect.Method
;
/**
*
* 多数据源切换的aop
*
* @author fengshuonan
* @date 2017年3月5日 上午10:22:16
*/
@Aspect
@Component
@ConditionalOnProperty
(
prefix
=
"guns"
,
name
=
"muti-datasource-open"
,
havingValue
=
"true"
)
public
class
MultiSourceExAop
implements
Ordered
{
private
Logger
log
=
LoggerFactory
.
getLogger
(
this
.
getClass
());
@Pointcut
(
value
=
"@annotation(com.stylefeng.guns.common.annotion.DataSource)"
)
private
void
cut
()
{
}
@Around
(
"cut()"
)
public
Object
around
(
ProceedingJoinPoint
point
)
throws
Throwable
{
Signature
signature
=
point
.
getSignature
();
MethodSignature
methodSignature
=
null
;
if
(!(
signature
instanceof
MethodSignature
))
{
throw
new
IllegalArgumentException
(
"该注解只能用于方法"
);
}
methodSignature
=
(
MethodSignature
)
signature
;
Object
target
=
point
.
getTarget
();
Method
currentMethod
=
target
.
getClass
().
getMethod
(
methodSignature
.
getName
(),
methodSignature
.
getParameterTypes
());
DataSource
datasource
=
currentMethod
.
getAnnotation
(
DataSource
.
class
);
if
(
datasource
!=
null
){
DataSourceContextHolder
.
setDataSourceType
(
datasource
.
name
());
log
.
debug
(
"设置数据源为:"
+
datasource
.
name
());
}
else
{
DataSourceContextHolder
.
setDataSourceType
(
DSEnum
.
DATA_SOURCE_GUNS
);
log
.
debug
(
"设置数据源为:dataSourceCurrent"
);
}
try
{
return
point
.
proceed
();
}
finally
{
log
.
debug
(
"清空数据源信息!"
);
DataSourceContextHolder
.
clearDataSourceType
();
}
}
/**
* aop的顺序要早于spring的事务
*/
@Override
public
int
getOrder
()
{
return
1
;
}
}
guns-admin/src/main/java/com/stylefeng/guns/core/mutidatesource/DataSourceContextHolder.java
deleted
100644 → 0
View file @
9cb81691
package
com
.
stylefeng
.
guns
.
core
.
mutidatesource
;
/**
*
* datasource的上下文
*
* @author fengshuonan
* @date 2017年3月5日 上午9:10:58
*/
public
class
DataSourceContextHolder
{
private
static
final
ThreadLocal
<
String
>
contextHolder
=
new
ThreadLocal
<
String
>();
/**
* @Description: 设置数据源类型
* @param dataSourceType 数据库类型
*/
public
static
void
setDataSourceType
(
String
dataSourceType
)
{
contextHolder
.
set
(
dataSourceType
);
}
/**
* @Description: 获取数据源类型
*/
public
static
String
getDataSourceType
()
{
return
contextHolder
.
get
();
}
/**
* @Description: 清除数据源类型
*/
public
static
void
clearDataSourceType
()
{
contextHolder
.
remove
();
}
}
guns-admin/src/main/java/com/stylefeng/guns/core/mutidatesource/DynamicDataSource.java
deleted
100644 → 0
View file @
9cb81691
package
com
.
stylefeng
.
guns
.
core
.
mutidatesource
;
import
org.springframework.jdbc.datasource.lookup.AbstractRoutingDataSource
;
/**
*
* 动态数据源
*
* @author fengshuonan
* @date 2017年3月5日 上午9:11:49
*/
public
class
DynamicDataSource
extends
AbstractRoutingDataSource
{
@Override
protected
Object
determineCurrentLookupKey
()
{
return
DataSourceContextHolder
.
getDataSourceType
();
}
}
guns-admin/src/main/java/com/stylefeng/guns/modular/biz/service/impl/TestServiceImpl.java
View file @
c4694d96
package
com
.
stylefeng
.
guns
.
modular
.
biz
.
service
.
impl
;
package
com
.
stylefeng
.
guns
.
modular
.
biz
.
service
.
impl
;
import
com.stylefeng.guns.common.annotion.DataSource
;
import
com.stylefeng.guns.common.constant.DSEnum
;
import
com.stylefeng.guns.common.constant.DSEnum
;
import
com.stylefeng.guns.common.persistence.dao.TestMapper
;
import
com.stylefeng.guns.common.persistence.dao.TestMapper
;
import
com.stylefeng.guns.common.persistence.model.Test
;
import
com.stylefeng.guns.common.persistence.model.Test
;
import
com.stylefeng.guns.core.mutidatasource.annotion.DataSource
;
import
com.stylefeng.guns.modular.biz.service.ITestService
;
import
com.stylefeng.guns.modular.biz.service.ITestService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
...
...
guns-admin/src/main/resources/application.yml
View file @
c4694d96
...
@@ -79,8 +79,9 @@ spring:
...
@@ -79,8 +79,9 @@ spring:
filters
:
log4j,wall,mergeStat
filters
:
log4j,wall,mergeStat
#多数据源
#多数据源
biz
:
guns
:
datasource
:
muti-datasource
:
default-dataSource-name
:
dataSourceGuns
#默认的数据源名称
url
:
jdbc:mysql://127.0.0.1:3306/biz?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
url
:
jdbc:mysql://127.0.0.1:3306/biz?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull
username
:
root
username
:
root
password
:
root
password
:
root
...
...
guns-core/pom.xml
View file @
c4694d96
...
@@ -34,6 +34,10 @@
...
@@ -34,6 +34,10 @@
<groupId>
org.springframework.boot
</groupId>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-jdbc
</artifactId>
<artifactId>
spring-boot-starter-jdbc
</artifactId>
</dependency>
</dependency>
<dependency>
<groupId>
com.alibaba
</groupId>
<artifactId>
druid
</artifactId>
</dependency>
<!--web-->
<!--web-->
<dependency>
<dependency>
...
...
guns-core/src/main/java/com/stylefeng/guns/core/mutidatasource/config/MutiDataSourceProperties.java
View file @
c4694d96
package
com
.
stylefeng
.
guns
.
core
.
mutidatasource
.
config
;
package
com
.
stylefeng
.
guns
.
core
.
mutidatasource
.
config
;
import
com.alibaba.druid.pool.DruidDataSource
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.boot.context.properties.ConfigurationProperties
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -13,8 +14,48 @@ import org.springframework.stereotype.Component;
...
@@ -13,8 +14,48 @@ import org.springframework.stereotype.Component;
@ConfigurationProperties
(
prefix
=
"guns.muti-datasource"
)
@ConfigurationProperties
(
prefix
=
"guns.muti-datasource"
)
public
class
MutiDataSourceProperties
{
public
class
MutiDataSourceProperties
{
//默认的数据源名称
private
String
defaultDataSourceName
=
"dataSourceGuns"
;
private
String
defaultDataSourceName
=
"dataSourceGuns"
;
//默认多数据源的链接
private
String
url
=
"jdbc:mysql://127.0.0.1:3306/biz?autoReconnect=true&useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull"
;
//默认多数据源的数据库账号
private
String
username
=
"root"
;
//默认多数据源的数据库密码
private
String
password
=
"root"
;
public
void
config
(
DruidDataSource
dataSource
)
{
dataSource
.
setUrl
(
url
);
dataSource
.
setUsername
(
username
);
dataSource
.
setPassword
(
password
);
}
public
String
getUrl
()
{
return
url
;
}
public
void
setUrl
(
String
url
)
{
this
.
url
=
url
;
}
public
String
getUsername
()
{
return
username
;
}
public
void
setUsername
(
String
username
)
{
this
.
username
=
username
;
}
public
String
getPassword
()
{
return
password
;
}
public
void
setPassword
(
String
password
)
{
this
.
password
=
password
;
}
public
String
getDefaultDataSourceName
()
{
public
String
getDefaultDataSourceName
()
{
return
defaultDataSourceName
;
return
defaultDataSourceName
;
}
}
...
...
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