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); } }