From 17adfebe5b188a52fd0cbb53066fc9c3167dba7c Mon Sep 17 00:00:00 2001
From: wangyu <727842003@qq.com>
Date: Mon, 26 Jun 2023 18:11:10 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E5=8A=A0=E8=BD=BD?=
=?UTF-8?q?=E6=84=9F=E7=9F=A5=E7=B1=BB?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 4 +-
pom.xml | 4 +-
rest-proxy-api/pom.xml | 2 +-
.../rest/configuration/RestLoadedAware.java | 15 ++++++
rest-proxy-core/pom.xml | 2 +-
.../configuration/RestClientProperties.java | 46 +++++++++----------
6 files changed, 43 insertions(+), 30 deletions(-)
create mode 100644 rest-proxy-api/src/main/java/group/flyfish/rest/configuration/RestLoadedAware.java
diff --git a/README.md b/README.md
index 2357bb2..15fceab 100644
--- a/README.md
+++ b/README.md
@@ -4,7 +4,7 @@ Rest Proxy组件是本人在长期的系统对接工作中提炼出的一个可
具体是这样的:**写一个interface,定义几个method,然后加上注解,完成!**,在业务里直接调用method即可,不需要写任何实现类!
## REST请求代理(基于Http Interface)
-本组件基于SpringBoot2.7.7构建,支持完整的AutoConfiguraiton。仅需要极少量配置就可以完成配置。当前最新版本为`1.1.2`,新增了标准REST注解。
+本组件基于SpringBoot2.7.7构建,支持完整的AutoConfiguraiton。仅需要极少量配置就可以完成配置。当前最新版本为`1.1.3`,新增了标准REST注解。
### 特性列表
- 无感知自动注入,只需interface + 注解即可轻松完成对接
@@ -29,7 +29,7 @@ Rest Proxy组件是本人在长期的系统对接工作中提炼出的一个可
group.flyfish
rest-proxy-core
- 1.1.2
+ 1.1.3
```
diff --git a/pom.xml b/pom.xml
index a8dd3d9..5da72ba 100644
--- a/pom.xml
+++ b/pom.xml
@@ -13,7 +13,7 @@
group.flyfish
rest-proxy
- 1.1.2
+ 1.1.3
8
@@ -22,7 +22,7 @@
1.8
4.4
2.6
- 1.1.2
+ 1.1.3
pom
diff --git a/rest-proxy-api/pom.xml b/rest-proxy-api/pom.xml
index 3412ecd..0fa40d2 100644
--- a/rest-proxy-api/pom.xml
+++ b/rest-proxy-api/pom.xml
@@ -5,7 +5,7 @@
group.flyfish
rest-proxy
- 1.1.2
+ 1.1.3
4.0.0
diff --git a/rest-proxy-api/src/main/java/group/flyfish/rest/configuration/RestLoadedAware.java b/rest-proxy-api/src/main/java/group/flyfish/rest/configuration/RestLoadedAware.java
new file mode 100644
index 0000000..11825f3
--- /dev/null
+++ b/rest-proxy-api/src/main/java/group/flyfish/rest/configuration/RestLoadedAware.java
@@ -0,0 +1,15 @@
+package group.flyfish.rest.configuration;
+
+/**
+ * rest客户端加载感知
+ *
+ * @author wangyu
+ */
+@FunctionalInterface
+public interface RestLoadedAware {
+
+ /**
+ * 所有客户端完成加载
+ */
+ void onClientsLoaded();
+}
diff --git a/rest-proxy-core/pom.xml b/rest-proxy-core/pom.xml
index c77ff85..0b900d0 100644
--- a/rest-proxy-core/pom.xml
+++ b/rest-proxy-core/pom.xml
@@ -5,7 +5,7 @@
group.flyfish
rest-proxy
- 1.1.2
+ 1.1.3
4.0.0
diff --git a/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/RestClientProperties.java b/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/RestClientProperties.java
index e62939d..566e57a 100644
--- a/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/RestClientProperties.java
+++ b/rest-proxy-core/src/main/java/group/flyfish/rest/configuration/RestClientProperties.java
@@ -11,11 +11,11 @@ import lombok.Getter;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.InitializingBean;
+import org.springframework.beans.factory.ObjectProvider;
import org.springframework.beans.factory.annotation.Autowired;
import java.time.Duration;
import java.util.HashMap;
-import java.util.List;
import java.util.Map;
/**
@@ -57,15 +57,22 @@ public class RestClientProperties implements InitializingBean {
* 修改器们
*/
@Getter(AccessLevel.NONE)
- @Setter(AccessLevel.NONE)
- private List modifiers;
+ @Setter(onMethod_ = @Autowired)
+ private ObjectProvider modifiers;
/**
* 配置感知项
*/
@Getter(AccessLevel.NONE)
- @Setter(AccessLevel.NONE)
- private List configures;
+ @Setter(onMethod_ = @Autowired)
+ private ObjectProvider configures;
+
+ /**
+ * 加载感知
+ */
+ @Getter(AccessLevel.NONE)
+ @Setter(onMethod_ = @Autowired)
+ private ObjectProvider aware;
/**
* 获取字典url
@@ -80,29 +87,20 @@ public class RestClientProperties implements InitializingBean {
return urls.get(key);
}
- @Autowired(required = false)
- public void setDefaultAuthProvider(RestAuthProvider provider) {
- this.authProvider = provider;
- }
-
- @Autowired(required = false)
- public void setModifiers(List modifiers) {
- this.modifiers = modifiers;
- }
-
- @Autowired(required = false)
- public void setConfigures(List configures) {
- this.configures = configures;
+ @Autowired
+ public void setDefaultAuthProvider(ObjectProvider provider) {
+ this.authProvider = provider.getIfAvailable();
}
@Override
public void afterPropertiesSet() {
- if (DataUtils.isNotEmpty(modifiers)) {
- modifiers.forEach(modifier -> modifier.modify(this));
- }
- if (DataUtils.isNotEmpty(configures)) {
- configures.forEach(item -> item.configure(this));
- }
+ // 配置修改
+ modifiers.forEach(modifier -> modifier.modify(this));
+ // 服务初始化
RestInvokers.configure(this);
+ // 配置感知
+ configures.forEach(item -> item.configure(this));
+ // 加载感知
+ aware.forEach(RestLoadedAware::onClientsLoaded);
}
}