Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
9bb0422c
提交
9bb0422c
authored
6月 02, 2022
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
1. 引入 Spring Cloud Alibaba Nacos
2. 移除基于 apollo 实现的 nacos
上级
5b2616fa
隐藏空白字符变更
内嵌
并排
正在显示
21 个修改的文件
包含
18 行增加
和
654 行删除
+18
-654
pom.xml
yudao-dependencies/pom.xml
+2
-11
pom.xml
yudao-framework/pom.xml
+0
-1
pom.xml
yudao-framework/yudao-spring-boot-starter-config/pom.xml
+0
-37
ConfigConsts.java
.../cn/iocoder/yudao/framework/apollo/core/ConfigConsts.java
+0
-22
ConfigFrameworkDAO.java
.../yudao/framework/apollo/internals/ConfigFrameworkDAO.java
+0
-32
DBConfigRepository.java
.../yudao/framework/apollo/internals/DBConfigRepository.java
+0
-183
DefaultXInjector.java
...er/yudao/framework/apollo/internals/DefaultXInjector.java
+0
-75
ConfigRespDTO.java
...r/yudao/framework/apollo/internals/dto/ConfigRespDTO.java
+0
-33
package-info.java
.../java/cn/iocoder/yudao/framework/apollo/package-info.java
+0
-13
DBConfigFactory.java
...n/iocoder/yudao/framework/apollo/spi/DBConfigFactory.java
+0
-32
ApolloApplicationContextInitializer.java
...ollo/spring/boot/ApolloApplicationContextInitializer.java
+0
-63
com.ctrip.framework.apollo.internals.Injector
...NF/services/com.ctrip.framework.apollo.internals.Injector
+0
-1
spring.factories
...arter-config/src/main/resources/META-INF/spring.factories
+0
-2
pom.xml
yudao-module-infra/yudao-module-infra-biz/pom.xml
+0
-4
ConfigDAOImpl.java
...er/yudao/module/infra/dal/mysql/config/ConfigDAOImpl.java
+0
-41
ConfigMapper.java
...der/yudao/module/infra/dal/mysql/config/ConfigMapper.java
+0
-36
ConfigRefreshConsumer.java
...odule/infra/mq/consumer/config/ConfigRefreshConsumer.java
+0
-24
ConfigRefreshMessage.java
.../module/infra/mq/message/config/ConfigRefreshMessage.java
+0
-17
ConfigProducer.java
...yudao/module/infra/mq/producer/config/ConfigProducer.java
+0
-26
pom.xml
yudao-module-system/yudao-module-system-biz/pom.xml
+8
-0
application-local.yaml
...dule-system-biz/src/main/resources/application-local.yaml
+8
-1
没有找到文件。
yudao-dependencies/pom.xml
浏览文件 @
9bb0422c
...
@@ -222,18 +222,9 @@
...
@@ -222,18 +222,9 @@
<version>
${redisson.version}
</version>
<version>
${redisson.version}
</version>
</dependency>
</dependency>
<!-- Config 配置中心相关 -->
<!-- Registry 注册中心相关 -->
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-config
</artifactId>
<version>
${revision}
</version>
</dependency>
<dependency>
<!-- Config 配置中心相关 -->
<groupId>
com.ctrip.framework.apollo
</groupId>
<artifactId>
apollo-client
</artifactId>
<!-- 引入 Apollo Client 库,实现内嵌的配置中心 -->
<version>
${apollo.version}
</version>
</dependency>
<!-- Job 定时任务相关 -->
<!-- Job 定时任务相关 -->
<dependency>
<dependency>
...
...
yudao-framework/pom.xml
浏览文件 @
9bb0422c
...
@@ -19,7 +19,6 @@
...
@@ -19,7 +19,6 @@
<module>
yudao-spring-boot-starter-file
</module>
<module>
yudao-spring-boot-starter-file
</module>
<module>
yudao-spring-boot-starter-monitor
</module>
<module>
yudao-spring-boot-starter-monitor
</module>
<module>
yudao-spring-boot-starter-protection
</module>
<module>
yudao-spring-boot-starter-protection
</module>
<module>
yudao-spring-boot-starter-config
</module>
<module>
yudao-spring-boot-starter-job
</module>
<module>
yudao-spring-boot-starter-job
</module>
<module>
yudao-spring-boot-starter-mq
</module>
<module>
yudao-spring-boot-starter-mq
</module>
...
...
yudao-framework/yudao-spring-boot-starter-config/pom.xml
deleted
100644 → 0
浏览文件 @
5b2616fa
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-framework
</artifactId>
<version>
${revision}
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
yudao-spring-boot-starter-config
</artifactId>
<packaging>
jar
</packaging>
<name>
${project.artifactId}
</name>
<description>
配置中心,基于 Apollo 魔改实现
</description>
<url>
https://github.com/YunaiV/ruoyi-vue-pro
</url>
<dependencies>
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-common
</artifactId>
</dependency>
<!-- Spring 核心 -->
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter
</artifactId>
</dependency>
<!-- Config 配置中心相关 -->
<dependency>
<groupId>
com.ctrip.framework.apollo
</groupId>
<artifactId>
apollo-client
</artifactId>
<!-- 引入 Apollo Client 库,实现内嵌的配置中心 -->
</dependency>
</dependencies>
</project>
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/core/ConfigConsts.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
framework
.
apollo
.
core
;
import
cn.iocoder.yudao.framework.apollo.internals.ConfigFrameworkDAO
;
/**
* 针对 {@link com.ctrip.framework.apollo.core.ConfigConsts} 的补充,主要增加:
*
* 1. apollo.jdbc.* 配置项的枚举
*
* @author 芋道源码
*/
public
class
ConfigConsts
{
/**
* {@link ConfigFrameworkDAO} 的实现类
*/
public
static
final
String
APOLLO_JDBC_DAO
=
"apollo.jdbc.dao"
;
public
static
final
String
APOLLO_JDBC_URL
=
"apollo.jdbc.url"
;
public
static
final
String
APOLLO_JDBC_USERNAME
=
"apollo.jdbc.username"
;
public
static
final
String
APOLLO_JDBC_PASSWORD
=
"apollo.jdbc.password"
;
}
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/ConfigFrameworkDAO.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
framework
.
apollo
.
internals
;
import
cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO
;
import
java.util.Date
;
import
java.util.List
;
/**
* 配置 Framework DAO 接口
*
* 注意,实现类必须提供 (String jdbcUrl, String username, String password) 构造方法
*
* @author 芋道源码
*/
public
interface
ConfigFrameworkDAO
{
/**
* 查询是否存在比 maxUpdateTime 的更新记录数量
*
* @param maxUpdateTime 最大更新时间
* @return 是否存在
*/
int
selectCountByUpdateTimeGt
(
Date
maxUpdateTime
);
/**
* 查询配置列表
*
* @return 配置列表
*/
List
<
ConfigRespDTO
>
selectList
();
}
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/DBConfigRepository.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
framework
.
apollo
.
internals
;
import
cn.hutool.core.collection.CollUtil
;
import
cn.hutool.core.util.ClassUtil
;
import
cn.hutool.core.util.ReflectUtil
;
import
cn.iocoder.yudao.framework.apollo.core.ConfigConsts
;
import
cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO
;
import
com.ctrip.framework.apollo.Apollo
;
import
com.ctrip.framework.apollo.build.ApolloInjector
;
import
com.ctrip.framework.apollo.core.utils.ApolloThreadFactory
;
import
com.ctrip.framework.apollo.enums.ConfigSourceType
;
import
com.ctrip.framework.apollo.internals.AbstractConfigRepository
;
import
com.ctrip.framework.apollo.internals.ConfigRepository
;
import
com.ctrip.framework.apollo.tracer.Tracer
;
import
com.ctrip.framework.apollo.util.ConfigUtil
;
import
com.ctrip.framework.apollo.util.factory.PropertiesFactory
;
import
lombok.SneakyThrows
;
import
lombok.extern.slf4j.Slf4j
;
import
java.lang.reflect.Constructor
;
import
java.util.Comparator
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Properties
;
import
java.util.concurrent.Executors
;
import
java.util.concurrent.ScheduledExecutorService
;
@Slf4j
public
class
DBConfigRepository
extends
AbstractConfigRepository
{
private
final
static
ScheduledExecutorService
m_executorService
;
private
static
DBConfigRepository
INSTANCE
;
static
{
m_executorService
=
Executors
.
newScheduledThreadPool
(
1
,
ApolloThreadFactory
.
create
(
DBConfigRepository
.
class
.
getSimpleName
(),
true
));
}
private
final
ConfigUtil
m_configUtil
;
private
final
PropertiesFactory
propertiesFactory
;
private
final
String
m_namespace
;
/**
* 配置缓存,使用 Properties 存储
*/
private
volatile
Properties
m_configCache
;
/**
* 缓存配置的最大更新时间,用于后续的增量轮询,判断是否有更新
*/
private
volatile
Date
maxUpdateTime
;
/**
* 配置读取 DAO
*/
private
final
ConfigFrameworkDAO
configFrameworkDAO
;
public
DBConfigRepository
(
String
namespace
)
{
// 初始化变量
this
.
m_namespace
=
namespace
;
this
.
propertiesFactory
=
ApolloInjector
.
getInstance
(
PropertiesFactory
.
class
);
this
.
m_configUtil
=
ApolloInjector
.
getInstance
(
ConfigUtil
.
class
);
// 初始化 DB
this
.
configFrameworkDAO
=
createConfigFrameworkDAO
();
// 初始化加载
this
.
trySync
();
// 初始化定时任务
this
.
schedulePeriodicRefresh
();
// 设置单例
INSTANCE
=
this
;
}
@SneakyThrows
private
static
ConfigFrameworkDAO
createConfigFrameworkDAO
()
{
String
dao
=
System
.
getProperty
(
ConfigConsts
.
APOLLO_JDBC_DAO
);
String
url
=
System
.
getProperty
(
ConfigConsts
.
APOLLO_JDBC_URL
);
String
username
=
System
.
getProperty
(
ConfigConsts
.
APOLLO_JDBC_USERNAME
);
String
password
=
System
.
getProperty
(
ConfigConsts
.
APOLLO_JDBC_PASSWORD
);
// 创建 DBConfigRepository 对象
Class
<?
extends
ConfigFrameworkDAO
>
clazz
=
ClassUtil
.
loadClass
(
dao
);
Constructor
<?
extends
ConfigFrameworkDAO
>
constructor
=
ReflectUtil
.
getConstructor
(
clazz
,
String
.
class
,
String
.
class
,
String
.
class
);
return
constructor
.
newInstance
(
url
,
username
,
password
);
}
/**
* 通知同步,
*/
public
static
void
noticeSync
()
{
// 提交到线程池中,避免和 schedulePeriodicRefresh 并发问题
m_executorService
.
submit
(()
->
{
INSTANCE
.
trySync
();
});
}
@Override
protected
void
sync
()
{
// 第一步,尝试获取配置
List
<
ConfigRespDTO
>
configs
=
this
.
loadConfigIfUpdate
(
this
.
maxUpdateTime
);
if
(
CollUtil
.
isEmpty
(
configs
))
{
// 如果没有更新,则返回
return
;
}
// 第二步,构建新的 Properties
Properties
newProperties
=
this
.
buildProperties
(
configs
);
this
.
m_configCache
=
newProperties
;
// 第三步,获取最大的配置时间
assert
configs
.
size
()
>
0
;
// 断言,避免告警
this
.
maxUpdateTime
=
configs
.
stream
().
max
(
Comparator
.
comparing
(
ConfigRespDTO:
:
getUpdateTime
)).
get
().
getUpdateTime
();
// 第四部,触发配置刷新!重要!!!!
super
.
fireRepositoryChange
(
m_namespace
,
newProperties
);
log
.
info
(
"[sync][缓存配置,数量为:{}]"
,
configs
.
size
());
}
@Override
public
Properties
getConfig
()
{
// 兜底,避免可能存在配置为 null 的情况
if
(
m_configCache
==
null
)
{
this
.
trySync
();
}
// 返回配置
return
m_configCache
;
}
@Override
public
void
setUpstreamRepository
(
ConfigRepository
upstreamConfigRepository
)
{
// 啥事不做
}
@Override
public
ConfigSourceType
getSourceType
()
{
return
ConfigSourceType
.
REMOTE
;
}
private
Properties
buildProperties
(
List
<
ConfigRespDTO
>
configs
)
{
Properties
properties
=
propertiesFactory
.
getPropertiesInstance
();
configs
.
stream
().
filter
(
config
->
!
config
.
getDeleted
())
// 过滤掉被删除的配置
.
forEach
(
config
->
properties
.
put
(
config
.
getKey
(),
config
.
getValue
()));
return
properties
;
}
// ========== 定时器相关操作 ==========
private
void
schedulePeriodicRefresh
()
{
log
.
debug
(
"Schedule periodic refresh with interval: {} {}"
,
m_configUtil
.
getRefreshInterval
(),
m_configUtil
.
getRefreshIntervalTimeUnit
());
m_executorService
.
scheduleAtFixedRate
(()
->
{
Tracer
.
logEvent
(
"Apollo.ConfigService"
,
String
.
format
(
"periodicRefresh: %s"
,
m_namespace
));
log
.
debug
(
"refresh config for namespace: {}"
,
m_namespace
);
// 执行同步. 内部已经 try catch 掉异常,无需在处理
trySync
();
Tracer
.
logEvent
(
"Apollo.Client.Version"
,
Apollo
.
VERSION
);
},
m_configUtil
.
getRefreshInterval
(),
m_configUtil
.
getRefreshInterval
(),
m_configUtil
.
getRefreshIntervalTimeUnit
());
}
// ========== 数据库相关操作 ==========
/**
* 如果配置发生变化,从数据库中获取最新的全量配置。
* 如果未发生变化,则返回空
*
* @param maxUpdateTime 当前配置的最大更新时间
* @return 配置列表
*/
private
List
<
ConfigRespDTO
>
loadConfigIfUpdate
(
Date
maxUpdateTime
)
{
// 第一步,判断是否要更新。
if
(
maxUpdateTime
==
null
)
{
// 如果更新时间为空,说明 DB 一定有新数据
log
.
info
(
"[loadConfigIfUpdate][首次加载全量配置]"
);
}
else
{
// 判断数据库中是否有更新的配置
if
(
configFrameworkDAO
.
selectCountByUpdateTimeGt
(
maxUpdateTime
)
==
0
)
{
return
null
;
}
log
.
info
(
"[loadConfigIfUpdate][增量加载全量配置]"
);
}
// 第二步,如果有更新,则从数据库加载所有配置
return
configFrameworkDAO
.
selectList
();
}
}
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/DefaultXInjector.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
framework
.
apollo
.
internals
;
import
cn.iocoder.yudao.framework.apollo.spi.DBConfigFactory
;
import
com.ctrip.framework.apollo.exceptions.ApolloConfigException
;
import
com.ctrip.framework.apollo.internals.*
;
import
com.ctrip.framework.apollo.spi.*
;
import
com.ctrip.framework.apollo.tracer.Tracer
;
import
com.ctrip.framework.apollo.util.ConfigUtil
;
import
com.ctrip.framework.apollo.util.factory.DefaultPropertiesFactory
;
import
com.ctrip.framework.apollo.util.factory.PropertiesFactory
;
import
com.ctrip.framework.apollo.util.http.HttpUtil
;
import
com.ctrip.framework.apollo.util.yaml.YamlParser
;
import
com.google.inject.AbstractModule
;
import
com.google.inject.Guice
;
import
com.google.inject.Singleton
;
/**
* Guice injector
*
* 基于 Guice 注入器实现类
*
* @author Jason Song(song_s@ctrip.com)
*/
public
class
DefaultXInjector
implements
Injector
{
private
final
com
.
google
.
inject
.
Injector
m_injector
;
public
DefaultXInjector
()
{
try
{
m_injector
=
Guice
.
createInjector
(
new
ApolloModule
());
}
catch
(
Throwable
ex
)
{
ApolloConfigException
exception
=
new
ApolloConfigException
(
"Unable to initialize Guice Injector!"
,
ex
);
Tracer
.
logError
(
exception
);
throw
exception
;
}
}
@Override
public
<
T
>
T
getInstance
(
Class
<
T
>
clazz
)
{
try
{
return
m_injector
.
getInstance
(
clazz
);
}
catch
(
Throwable
ex
)
{
Tracer
.
logError
(
ex
);
throw
new
ApolloConfigException
(
String
.
format
(
"Unable to load instance for %s!"
,
clazz
.
getName
()),
ex
);
}
}
@Override
public
<
T
>
T
getInstance
(
Class
<
T
>
clazz
,
String
name
)
{
// Guice does not support get instance by type and name
return
null
;
}
private
static
class
ApolloModule
extends
AbstractModule
{
@Override
protected
void
configure
()
{
bind
(
ConfigManager
.
class
).
to
(
DefaultConfigManager
.
class
).
in
(
Singleton
.
class
);
bind
(
ConfigFactoryManager
.
class
).
to
(
DefaultConfigFactoryManager
.
class
).
in
(
Singleton
.
class
);
bind
(
ConfigRegistry
.
class
).
to
(
DefaultConfigRegistry
.
class
).
in
(
Singleton
.
class
);
// 自定义 ConfigFactory 实现,使用 DB 作为数据源
bind
(
ConfigFactory
.
class
).
to
(
DBConfigFactory
.
class
).
in
(
Singleton
.
class
);
bind
(
ConfigUtil
.
class
).
in
(
Singleton
.
class
);
bind
(
HttpUtil
.
class
).
in
(
Singleton
.
class
);
bind
(
ConfigServiceLocator
.
class
).
in
(
Singleton
.
class
);
bind
(
RemoteConfigLongPollService
.
class
).
in
(
Singleton
.
class
);
bind
(
YamlParser
.
class
).
in
(
Singleton
.
class
);
bind
(
PropertiesFactory
.
class
).
to
(
DefaultPropertiesFactory
.
class
).
in
(
Singleton
.
class
);
}
}
}
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/internals/dto/ConfigRespDTO.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
framework
.
apollo
.
internals
.
dto
;
import
lombok.Data
;
import
java.util.Date
;
/**
* 配置 Response DTO
*
* @author 芋道源码
*/
@Data
public
class
ConfigRespDTO
{
/**
* 参数键名
*/
private
String
key
;
/**
* 参数键值
*/
private
String
value
;
/**
* 是否删除
*/
private
Boolean
deleted
;
/**
* 更新时间
*/
private
Date
updateTime
;
}
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/package-info.java
deleted
100644 → 0
浏览文件 @
5b2616fa
/**
* 配置中心客户端,基于 Apollo Client 进行简化
*
* 差别在于,我们使用 cn.iocoder.yudao.modules.infra.dal.dataobject.config.InfConfigDO 表作为配置源。
* 当然,功能肯定也会相对少些,满足最小化诉求。
*
* 1. 项目初始化时,可以使用 SysConfigDO 表的配置
* 2. 使用 Spring @Value 可以注入属性
* 3. SysConfigDO 表的配置修改时,注入到 @Value 的属性可以刷新
*
* 另外,整个包结构会参考 Apollo 为主,方便维护与理解
*/
package
cn
.
iocoder
.
yudao
.
framework
.
apollo
;
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/spi/DBConfigFactory.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
framework
.
apollo
.
spi
;
import
cn.iocoder.yudao.framework.apollo.internals.DBConfigRepository
;
import
com.ctrip.framework.apollo.Config
;
import
com.ctrip.framework.apollo.ConfigFile
;
import
com.ctrip.framework.apollo.core.enums.ConfigFileFormat
;
import
com.ctrip.framework.apollo.internals.ConfigRepository
;
import
com.ctrip.framework.apollo.internals.DefaultConfig
;
import
com.ctrip.framework.apollo.spi.ConfigFactory
;
/**
* 基于 DB 的 ConfigFactory 实现类
*
* @author 芋道源码
*/
public
class
DBConfigFactory
implements
ConfigFactory
{
@Override
public
Config
create
(
String
namespace
)
{
return
new
DefaultConfig
(
namespace
,
this
.
createDBConfigRepository
(
namespace
));
}
@Override
public
ConfigFile
createConfigFile
(
String
namespace
,
ConfigFileFormat
configFileFormat
)
{
throw
new
UnsupportedOperationException
(
"暂不支持 Apollo 配置文件"
);
}
private
ConfigRepository
createDBConfigRepository
(
String
namespace
)
{
return
new
DBConfigRepository
(
namespace
);
}
}
yudao-framework/yudao-spring-boot-starter-config/src/main/java/cn/iocoder/yudao/framework/apollo/spring/boot/ApolloApplicationContextInitializer.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
framework
.
apollo
.
spring
.
boot
;
import
cn.iocoder.yudao.framework.apollo.core.ConfigConsts
;
import
com.google.common.base.Strings
;
import
org.springframework.boot.SpringApplication
;
import
org.springframework.boot.env.EnvironmentPostProcessor
;
import
org.springframework.core.Ordered
;
import
org.springframework.core.env.ConfigurableEnvironment
;
/**
* 对 {@link com.ctrip.framework.apollo.spring.boot.ApolloApplicationContextInitializer} 的补充,目前的目的有:
*
* 1. 将自定义的 apollo.jdbc 设置到 System 变量中
*
* @author 芋道源码
*/
public
class
ApolloApplicationContextInitializer
implements
EnvironmentPostProcessor
,
Ordered
{
/**
* 优先级更高,要早于 Apollo 的 ApolloApplicationContextInitializer 的初始化
*/
public
static
final
int
DEFAULT_ORDER
=
-
1
;
private
int
order
=
DEFAULT_ORDER
;
private
static
final
String
[]
APOLLO_SYSTEM_PROPERTIES
=
{
ConfigConsts
.
APOLLO_JDBC_DAO
,
ConfigConsts
.
APOLLO_JDBC_URL
,
ConfigConsts
.
APOLLO_JDBC_USERNAME
,
ConfigConsts
.
APOLLO_JDBC_PASSWORD
};
@Override
public
void
postProcessEnvironment
(
ConfigurableEnvironment
environment
,
SpringApplication
application
)
{
initializeSystemProperty
(
environment
);
}
/**
* To fill system properties from environment config
*/
void
initializeSystemProperty
(
ConfigurableEnvironment
environment
)
{
for
(
String
propertyName
:
APOLLO_SYSTEM_PROPERTIES
)
{
fillSystemPropertyFromEnvironment
(
environment
,
propertyName
);
}
}
private
void
fillSystemPropertyFromEnvironment
(
ConfigurableEnvironment
environment
,
String
propertyName
)
{
if
(
System
.
getProperty
(
propertyName
)
!=
null
)
{
return
;
}
String
propertyValue
=
environment
.
getProperty
(
propertyName
);
if
(
Strings
.
isNullOrEmpty
(
propertyValue
))
{
return
;
}
System
.
setProperty
(
propertyName
,
propertyValue
);
}
@Override
public
int
getOrder
()
{
return
order
;
}
public
void
setOrder
(
int
order
)
{
this
.
order
=
order
;
}
}
yudao-framework/yudao-spring-boot-starter-config/src/main/resources/META-INF/services/com.ctrip.framework.apollo.internals.Injector
deleted
100644 → 0
浏览文件 @
5b2616fa
cn.iocoder.yudao.framework.apollo.internals.DefaultXInjector
yudao-framework/yudao-spring-boot-starter-config/src/main/resources/META-INF/spring.factories
deleted
100644 → 0
浏览文件 @
5b2616fa
org.springframework.boot.env.EnvironmentPostProcessor=\
cn.iocoder.yudao.framework.apollo.spring.boot.ApolloApplicationContextInitializer
yudao-module-infra/yudao-module-infra-biz/pom.xml
浏览文件 @
9bb0422c
...
@@ -58,10 +58,6 @@
...
@@ -58,10 +58,6 @@
</dependency>
</dependency>
<!-- Config 配置中心相关 -->
<!-- Config 配置中心相关 -->
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
<artifactId>
yudao-spring-boot-starter-config
</artifactId>
</dependency>
<!-- Job 定时任务相关 -->
<!-- Job 定时任务相关 -->
<dependency>
<dependency>
...
...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigDAOImpl.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
dal
.
mysql
.
config
;
import
cn.iocoder.yudao.framework.apollo.internals.ConfigFrameworkDAO
;
import
cn.iocoder.yudao.framework.apollo.internals.dto.ConfigRespDTO
;
import
org.springframework.jdbc.core.JdbcTemplate
;
import
org.springframework.jdbc.datasource.DriverManagerDataSource
;
import
javax.sql.DataSource
;
import
java.util.Date
;
import
java.util.List
;
/**
* ConfigDAOImpl 实现类
*
* @author 芋道源码
*/
public
class
ConfigDAOImpl
implements
ConfigFrameworkDAO
{
private
final
JdbcTemplate
jdbcTemplate
;
public
ConfigDAOImpl
(
String
jdbcUrl
,
String
username
,
String
password
)
{
DataSource
dataSource
=
new
DriverManagerDataSource
(
jdbcUrl
,
username
,
password
);
this
.
jdbcTemplate
=
new
JdbcTemplate
(
dataSource
);
}
@Override
public
int
selectCountByUpdateTimeGt
(
Date
maxUpdateTime
)
{
return
jdbcTemplate
.
queryForObject
(
"SELECT COUNT(*) FROM infra_config WHERE update_time > ?"
,
Integer
.
class
,
maxUpdateTime
);
}
@Override
public
List
<
ConfigRespDTO
>
selectList
()
{
return
jdbcTemplate
.
query
(
"SELECT config_key, value, update_time, deleted FROM infra_config"
,
(
rs
,
rowNum
)
->
new
ConfigRespDTO
().
setKey
(
rs
.
getString
(
"config_key"
))
.
setValue
(
rs
.
getString
(
"value"
))
.
setUpdateTime
(
rs
.
getDate
(
"update_time"
))
.
setDeleted
(
rs
.
getBoolean
(
"deleted"
)));
}
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/dal/mysql/config/ConfigMapper.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
dal
.
mysql
.
config
;
import
cn.iocoder.yudao.framework.common.pojo.PageResult
;
import
cn.iocoder.yudao.framework.mybatis.core.mapper.BaseMapperX
;
import
cn.iocoder.yudao.framework.mybatis.core.query.LambdaQueryWrapperX
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigExportReqVO
;
import
cn.iocoder.yudao.module.infra.controller.admin.config.vo.ConfigPageReqVO
;
import
cn.iocoder.yudao.module.infra.dal.dataobject.config.ConfigDO
;
import
org.apache.ibatis.annotations.Mapper
;
import
java.util.List
;
@Mapper
public
interface
ConfigMapper
extends
BaseMapperX
<
ConfigDO
>
{
default
ConfigDO
selectByKey
(
String
key
)
{
return
selectOne
(
ConfigDO:
:
getConfigKey
,
key
);
}
default
PageResult
<
ConfigDO
>
selectPage
(
ConfigPageReqVO
reqVO
)
{
return
selectPage
(
reqVO
,
new
LambdaQueryWrapperX
<
ConfigDO
>()
.
likeIfPresent
(
ConfigDO:
:
getName
,
reqVO
.
getName
())
.
likeIfPresent
(
ConfigDO:
:
getConfigKey
,
reqVO
.
getKey
())
.
eqIfPresent
(
ConfigDO:
:
getType
,
reqVO
.
getType
())
.
betweenIfPresent
(
ConfigDO:
:
getCreateTime
,
reqVO
.
getBeginTime
(),
reqVO
.
getEndTime
()));
}
default
List
<
ConfigDO
>
selectList
(
ConfigExportReqVO
reqVO
)
{
return
selectList
(
new
LambdaQueryWrapperX
<
ConfigDO
>()
.
likeIfPresent
(
ConfigDO:
:
getName
,
reqVO
.
getName
())
.
likeIfPresent
(
ConfigDO:
:
getConfigKey
,
reqVO
.
getKey
())
.
eqIfPresent
(
ConfigDO:
:
getType
,
reqVO
.
getType
())
.
betweenIfPresent
(
ConfigDO:
:
getCreateTime
,
reqVO
.
getBeginTime
(),
reqVO
.
getEndTime
()));
}
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/mq/consumer/config/ConfigRefreshConsumer.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
mq
.
consumer
.
config
;
import
cn.iocoder.yudao.framework.apollo.internals.DBConfigRepository
;
import
cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessageListener
;
import
cn.iocoder.yudao.module.infra.mq.message.config.ConfigRefreshMessage
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.stereotype.Component
;
/**
* 针对 {@link ConfigRefreshMessage} 的消费者
*
* @author 芋道源码
*/
@Component
@Slf4j
public
class
ConfigRefreshConsumer
extends
AbstractChannelMessageListener
<
ConfigRefreshMessage
>
{
@Override
public
void
onMessage
(
ConfigRefreshMessage
message
)
{
log
.
info
(
"[onMessage][收到 Config 刷新消息]"
);
DBConfigRepository
.
noticeSync
();
}
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/mq/message/config/ConfigRefreshMessage.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
mq
.
message
.
config
;
import
cn.iocoder.yudao.framework.mq.core.pubsub.AbstractChannelMessage
;
import
lombok.Data
;
/**
* 配置数据刷新 Message
*/
@Data
public
class
ConfigRefreshMessage
extends
AbstractChannelMessage
{
@Override
public
String
getChannel
()
{
return
"infra.config.refresh"
;
}
}
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/mq/producer/config/ConfigProducer.java
deleted
100644 → 0
浏览文件 @
5b2616fa
package
cn
.
iocoder
.
yudao
.
module
.
infra
.
mq
.
producer
.
config
;
import
cn.iocoder.yudao.module.infra.mq.message.config.ConfigRefreshMessage
;
import
cn.iocoder.yudao.framework.mq.core.RedisMQTemplate
;
import
org.springframework.stereotype.Component
;
import
javax.annotation.Resource
;
/**
* Config 配置相关消息的 Producer
*/
@Component
public
class
ConfigProducer
{
@Resource
private
RedisMQTemplate
redisMQTemplate
;
/**
* 发送 {@link ConfigRefreshMessage} 消息
*/
public
void
sendConfigRefreshMessage
()
{
ConfigRefreshMessage
message
=
new
ConfigRefreshMessage
();
redisMQTemplate
.
send
(
message
);
}
}
yudao-module-system/yudao-module-system-biz/pom.xml
浏览文件 @
9bb0422c
...
@@ -72,6 +72,14 @@
...
@@ -72,6 +72,14 @@
<artifactId>
yudao-spring-boot-starter-redis
</artifactId>
<artifactId>
yudao-spring-boot-starter-redis
</artifactId>
</dependency>
</dependency>
<!-- Registry 注册中心相关 -->
<dependency>
<groupId>
com.alibaba.cloud
</groupId>
<artifactId>
spring-cloud-starter-alibaba-nacos-discovery
</artifactId>
</dependency>
<!-- Config 配置中心相关 -->
<!-- Job 定时任务相关 TODO 芋艿:暂时去掉 -->
<!-- Job 定时任务相关 TODO 芋艿:暂时去掉 -->
<!-- <dependency>-->
<!-- <dependency>-->
<!-- <groupId>cn.iocoder.cloud</groupId>-->
<!-- <groupId>cn.iocoder.cloud</groupId>-->
...
...
yudao-module-system/yudao-module-system-biz/src/main/resources/application-local.yaml
浏览文件 @
9bb0422c
...
@@ -2,8 +2,8 @@ server:
...
@@ -2,8 +2,8 @@ server:
port
:
48081
port
:
48081
---
#################### 数据库相关配置 ####################
---
#################### 数据库相关配置 ####################
spring
:
spring
:
# 数据源配置项
# 数据源配置项
autoconfigure
:
autoconfigure
:
exclude
:
exclude
:
...
@@ -72,6 +72,13 @@ spring:
...
@@ -72,6 +72,13 @@ spring:
database
:
0
# 数据库索引
database
:
0
# 数据库索引
# password: 123456 # 密码,建议生产环境开启
# password: 123456 # 密码,建议生产环境开启
---
#################### 注册中心相关配置 ####################
spring
:
cloud
:
nacos
:
server-addr
:
127.0.0.1:8848
jasypt
:
jasypt
:
encryptor
:
encryptor
:
password
:
yuanma
# 加解密的秘钥
password
:
yuanma
# 加解密的秘钥
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论