Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cocktail-party-server
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cocktail-party
cocktail-party-server
Commits
ac942428
提交
ac942428
authored
9月 20, 2021
作者:
RuoYi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
reset dataSourceAspect
上级
54bfa627
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
33 行增加
和
5 行删除
+33
-5
DataSourceAspect.java
...in/java/com/ruoyi/framework/aspectj/DataSourceAspect.java
+33
-3
RateLimiterAspect.java
...n/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java
+0
-2
没有找到文件。
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/DataSourceAspect.java
浏览文件 @
ac942428
package
com
.
ruoyi
.
framework
.
aspectj
;
import
java.util.Objects
;
import
org.aspectj.lang.ProceedingJoinPoint
;
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.core.annotation.AnnotationUtils
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.stereotype.Component
;
import
com.ruoyi.common.annotation.DataSource
;
import
com.ruoyi.common.utils.StringUtils
;
import
com.ruoyi.framework.datasource.DynamicDataSourceContextHolder
;
/**
...
...
@@ -22,11 +27,22 @@ public class DataSourceAspect
{
protected
Logger
logger
=
LoggerFactory
.
getLogger
(
getClass
());
@Around
(
"@annotation(dataSource) || @within(dataSource)"
)
public
Object
around
(
ProceedingJoinPoint
point
,
DataSource
dataSource
)
throws
Throwable
@Pointcut
(
"@annotation(com.ruoyi.common.annotation.DataSource)"
+
"|| @within(com.ruoyi.common.annotation.DataSource)"
)
public
void
dsPointCut
()
{
DynamicDataSourceContextHolder
.
setDataSourceType
(
dataSource
.
value
().
name
());
}
@Around
(
"dsPointCut()"
)
public
Object
around
(
ProceedingJoinPoint
point
)
throws
Throwable
{
DataSource
dataSource
=
getDataSource
(
point
);
if
(
StringUtils
.
isNotNull
(
dataSource
))
{
DynamicDataSourceContextHolder
.
setDataSourceType
(
dataSource
.
value
().
name
());
}
try
{
...
...
@@ -39,4 +55,18 @@ public class DataSourceAspect
}
}
/**
* 获取需要切换的数据源
*/
public
DataSource
getDataSource
(
ProceedingJoinPoint
point
)
{
MethodSignature
signature
=
(
MethodSignature
)
point
.
getSignature
();
DataSource
dataSource
=
AnnotationUtils
.
findAnnotation
(
signature
.
getMethod
(),
DataSource
.
class
);
if
(
Objects
.
nonNull
(
dataSource
))
{
return
dataSource
;
}
return
AnnotationUtils
.
findAnnotation
(
signature
.
getDeclaringType
(),
DataSource
.
class
);
}
}
ruoyi-framework/src/main/java/com/ruoyi/framework/aspectj/RateLimiterAspect.java
浏览文件 @
ac942428
...
...
@@ -4,10 +4,8 @@ import java.lang.reflect.Method;
import
java.util.Collections
;
import
java.util.List
;
import
org.aspectj.lang.JoinPoint
;
import
org.aspectj.lang.Signature
;
import
org.aspectj.lang.annotation.Aspect
;
import
org.aspectj.lang.annotation.Before
;
import
org.aspectj.lang.annotation.Pointcut
;
import
org.aspectj.lang.reflect.MethodSignature
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论