diff --git a/README.md b/README.md
index 4ffc6f6f3e53bfa782a6323b60cd3b3237e5a5b0..a41cb5dc47279cd04e1e627a2bfa64e85df25925 100644
--- a/README.md
+++ b/README.md
@@ -30,13 +30,15 @@ dorive = domain + driven 或 do + driven ,是原公司项目沉淀后的开源
- 每个模块都具备独立运行的能力。
- 每个模块都能单独测试。
+- 允许同个模块不同版本,同时存在。
- 模块之间配置、命名空间隔离。
+- 模块与模块的配置、脚本等生命周期一致。
- 模块可选择向外暴露的bean。
- 模块之间不直接依赖,可通过接口与事件进行交互。
### 🛠️模型化
-一个模块由一个边界上下文与一个或多个模型组成。
+同个领域内的多个模块共享一个边界上下文。
边界上下文的作用:
@@ -55,14 +57,14 @@ dorive开发框架实现了模块化、模型化的全部特性,你可以有
模块化、模型化的优势:
-- 多个模块互不影响,多人协同开发项目,效率高。
-- 单个模块升级或回退,影响小。
-- 模块间调用关系简单,易维护。
-- 模块可嵌入其他项目,复用性好。
-- 模块提供接口,重写业务逻辑,拓展性好。
-- 建模后,可自动生成基本代码与脚本。
-- 可重写模型方法,定制业务逻辑。
-- 可监听模型事件,减少代码耦合度。
+- 多人协同,效率高。
+- 升级或回退,影响小。
+- 调用简单,易维护。
+- 无缝迁移,复用性好。
+- 面向对象,拓展性好。
+- 事件驱动,耦合度低。
+- 持续演进,技术负债低。
+- 代码生成,开发快。
### 💬使用建议
@@ -81,25 +83,34 @@ dorive开发框架实现了模块化、模型化的全部特性,你可以有
com.gitee.digital-engine
dorive-spring-boot-starter
- 3.5.0.8
+ 3.5.1
```
如果是存量项目,你还需要考虑兼容性:
-| 所属 | 模块 | 说明 | 适配Spring Boot版本 |
-| :----: | -------------------------- | ---------------- | ------------------- |
-| 模块化 | dorive-module | 模块化核心实现 | 2.7.18 |
-| 模块化 | dorive-test | 测试插件实现 | 2.7.18 |
-| 模型化 | dorive-api | 领域建模范式 | 2.2.2 - 2.7.18 |
-| 模型化 | dorive-core | 模型化核心实现 | 2.2.2 - 2.7.18 |
-| 模型化 | dorive-event | 事件通知实现 | 2.2.2 - 2.7.18 |
-| 模型化 | dorive-query | 关联查询实现 | 2.2.2 - 2.7.18 |
-| 模型化 | dorive-ref | 仓储引用实现 | 2.2.2 - 2.7.18 |
-| 模型化 | dorive-sql | 动态查询实现 | 2.2.2 - 2.7.18 |
-| 模型化 | dorive-mybatis-plus | mybatis-plus适配 | 2.2.2 - 2.7.18 |
-| 模型化 | dorive-web | web开发适配 | 2.2.2 - 2.7.18 |
-| | dorive-spring-boot-starter | 启动器 | 2.2.2 - 2.7.18 |
+| 模块 | 说明 | 模块 | 适配Spring Boot版本 |
+| -------------------------- | ---------------- | ------ | ------------------- |
+| dorive-api | 框架规范 | | |
+| dorive-module | 模块化核心实现 | 模块化 | 2.7.18 |
+| dorive-test | 测试插件实现 | 模块化 | 2.7.18 |
+| dorive-core | 模型化核心实现 | 模型化 | 2.2.2 - 2.7.18 |
+| dorive-event | 事件通知实现 | 模型化 | 2.2.2 - 2.7.18 |
+| dorive-query | 关联查询实现 | 模型化 | 2.2.2 - 2.7.18 |
+| dorive-ref | 仓储引用实现 | 模型化 | 2.2.2 - 2.7.18 |
+| dorive-sql | 动态查询实现 | 模型化 | 2.2.2 - 2.7.18 |
+| dorive-mybatis-plus | mybatis-plus适配 | 模型化 | 2.2.2 - 2.7.18 |
+| dorive-web | web开发适配 | 模型化 | 2.2.2 - 2.7.18 |
+| dorive-autoconfigure | 自动配置实现 | | |
+| dorive-spring-boot-starter | 启动器 | | |
+
+### 🌿分支版本说明
+
+例如:3.5.1(格式A.B.C)
+
+- A-架构版本:架构重构时增加,不保证兼容性。
+- B-特性版本:新特性引入时增加。
+- C-迭代版本:功能优化、bug修复时增加。
### 📝文档
@@ -113,30 +124,6 @@ wiki地址:
- [Gitee issue](https://gitee.com/digital-engine/dorive/issues)
-### 📘版本说明
-
-| 版本 | 说明 |
-| ---- | ------------------------------------------------------------ |
-| 1.x | 试验领域驱动落地的可能性 |
-| 2.x | 完成基本功能开发,并在项目中应用 |
-| 3.x | 重新设计内部架构,并优化大量代码。自3.4.3.4版本开始,项目进入维护阶段 |
-
-### 🌿分支说明
-
-| 分支 | 说明 |
-| ------ | ------------------------------------------------------------ |
-| master | 主分支,release版本使用的分支,不接收任何pr或修改 |
-| 3.x | 版本分支,分支名即版本号,版本号高于master的,为正在开发的分支 |
-
-### 🤝与我(们)一起
-
-1. 请将个人联系方式,发送邮件至digital_engine@163.com
-2. 等待维护者向你发出邀请
-
-### ⭐Star dorive
-
-[](https://starchart.cc/chentaoah/dorive)
-
### 🙏🏻特别感谢
- [hutool](https://gitee.com/dromara/hutool/tree/v5-master/)
diff --git a/doc/img/entity.png b/doc/img/entity.png
deleted file mode 100644
index 1e46932e339e50efd4d4679cb2767c866ff43564..0000000000000000000000000000000000000000
Binary files a/doc/img/entity.png and /dev/null differ
diff --git a/doc/img/logic.png b/doc/img/logic.png
new file mode 100644
index 0000000000000000000000000000000000000000..7c10d2fb6979acce904044f6e17e440d97417e0b
Binary files /dev/null and b/doc/img/logic.png differ
diff --git a/doc/img/physical.png b/doc/img/physical.png
new file mode 100644
index 0000000000000000000000000000000000000000..d43c96b57af9cd8bb23877d3e064ab3b637af66c
Binary files /dev/null and b/doc/img/physical.png differ
diff --git a/dorive-api/pom.xml b/dorive-api/pom.xml
index 784f68c1fa3c5f6dca0b0bbd56512c6dfcb70a44..8a4a7517922bfdf59fa941bd7258c5a502f602a6 100644
--- a/dorive-api/pom.xml
+++ b/dorive-api/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-api
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/annotation/core/Repository.java b/dorive-api/src/main/java/com/gitee/dorive/api/annotation/core/Repository.java
index 1af14a2127ee19aaed5a6baa2ce7fd52824fa6c3..f93f05156c86600e2c23ae1a25ebd9e6140c9cf2 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/annotation/core/Repository.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/annotation/core/Repository.java
@@ -45,11 +45,6 @@ public @interface Repository {
*/
Class> factory() default Object.class;
- /**
- * 边界上下文
- */
- String boundedContext() default "";
-
/**
* 派生
*/
@@ -65,4 +60,9 @@ public @interface Repository {
*/
Class>[] queries() default {};
+ /**
+ * 边界上下文
+ */
+ String boundedContext() default "";
+
}
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/api/BoundedContextAware.java b/dorive-api/src/main/java/com/gitee/dorive/api/api/BoundedContextAware.java
new file mode 100644
index 0000000000000000000000000000000000000000..0433a048e1060050a2c792cc91a5f6490aa5e6e1
--- /dev/null
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/api/BoundedContextAware.java
@@ -0,0 +1,26 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gitee.dorive.api.api;
+
+import com.gitee.dorive.api.entity.BoundedContext;
+
+public interface BoundedContextAware {
+
+ void setBoundedContext(BoundedContext boundedContext);
+
+}
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/entity/common/BoundedContext.java b/dorive-api/src/main/java/com/gitee/dorive/api/entity/BoundedContext.java
similarity index 95%
rename from dorive-core/src/main/java/com/gitee/dorive/core/entity/common/BoundedContext.java
rename to dorive-api/src/main/java/com/gitee/dorive/api/entity/BoundedContext.java
index 0f677031e5cf797364a14d2f450c9d13f0c102fb..d770c46d60c09fe1f982da7a93c0409f9576b1e5 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/entity/common/BoundedContext.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/entity/BoundedContext.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.entity.common;
+package com.gitee.dorive.api.entity;
import lombok.NoArgsConstructor;
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/entity/core/def/RepositoryDef.java b/dorive-api/src/main/java/com/gitee/dorive/api/entity/core/def/RepositoryDef.java
index f2b3090101bb62a52c4d933df8daf00d797b311c..60eb250048920edf7b98336ce8e16309e3143dfb 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/entity/core/def/RepositoryDef.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/entity/core/def/RepositoryDef.java
@@ -32,10 +32,10 @@ public class RepositoryDef {
private String value;
private Class> dataSource;
private Class> factory;
- private String boundedContext;
private Class>[] derived;
private Class>[] events;
private Class>[] queries;
+ private String boundedContext;
public static RepositoryDef fromElement(AnnotatedElement element) {
Repository repository = AnnotatedElementUtils.getMergedAnnotation(element, Repository.class);
@@ -44,10 +44,10 @@ public class RepositoryDef {
repositoryDef.setValue(repository.value());
repositoryDef.setDataSource(repository.dataSource());
repositoryDef.setFactory(repository.factory());
- repositoryDef.setBoundedContext(repository.boundedContext());
repositoryDef.setDerived(repository.derived());
repositoryDef.setEvents(repository.events());
repositoryDef.setQueries(repository.queries());
+ repositoryDef.setBoundedContext(repository.boundedContext());
return repositoryDef;
}
return null;
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/impl/core/EntityDefinitionResolver.java b/dorive-api/src/main/java/com/gitee/dorive/api/impl/core/EntityDefinitionResolver.java
index 9c7379d68198724ff3a1c292c84a973cf5a862eb..1a8cbe698f2bce6fd6d09e7d5cbf25cd11b4a93e 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/impl/core/EntityDefinitionResolver.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/impl/core/EntityDefinitionResolver.java
@@ -28,7 +28,7 @@ import com.gitee.dorive.api.entity.core.FieldDefinition;
import com.gitee.dorive.api.entity.core.FieldEntityDefinition;
import com.gitee.dorive.api.entity.core.PropertyDefinition;
import com.gitee.dorive.api.entity.core.def.*;
-import com.gitee.dorive.api.util.ReflectUtils;
+import com.gitee.dorive.api.impl.util.ReflectUtils;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.annotation.AnnotatedElementUtils;
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/impl/query/QueryDefinitionResolver.java b/dorive-api/src/main/java/com/gitee/dorive/api/impl/query/QueryDefinitionResolver.java
index d47641b0447e0bd0f090990635c0d9d94e13c4ac..159f5ebd4845334e7efa84c19bd09fbee7754b78 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/impl/query/QueryDefinitionResolver.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/impl/query/QueryDefinitionResolver.java
@@ -23,7 +23,7 @@ import com.gitee.dorive.api.entity.query.QueryDefinition;
import com.gitee.dorive.api.entity.query.QueryFieldDefinition;
import com.gitee.dorive.api.entity.query.def.QueryDef;
import com.gitee.dorive.api.entity.query.def.QueryFieldDef;
-import com.gitee.dorive.api.util.ReflectUtils;
+import com.gitee.dorive.api.impl.util.ReflectUtils;
import org.apache.commons.lang3.StringUtils;
import java.lang.reflect.Field;
diff --git a/dorive-api/src/main/java/com/gitee/dorive/api/util/ReflectUtils.java b/dorive-api/src/main/java/com/gitee/dorive/api/impl/util/ReflectUtils.java
similarity index 95%
rename from dorive-api/src/main/java/com/gitee/dorive/api/util/ReflectUtils.java
rename to dorive-api/src/main/java/com/gitee/dorive/api/impl/util/ReflectUtils.java
index 127e52feda21c99ae313c7e25b7a3ffb13185ccc..2b121bf5e605e063ff85f2d4616da47da8556039 100644
--- a/dorive-api/src/main/java/com/gitee/dorive/api/util/ReflectUtils.java
+++ b/dorive-api/src/main/java/com/gitee/dorive/api/impl/util/ReflectUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.api.util;
+package com.gitee.dorive.api.impl.util;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
@@ -50,7 +50,7 @@ public class ReflectUtils {
return fields;
}
- public static Class> getFirstArgumentType(Class> type) {
+ public static Class> getFirstTypeArgument(Class> type) {
Type genericSuperclass = type.getGenericSuperclass();
ParameterizedType parameterizedType = (ParameterizedType) genericSuperclass;
Type actualTypeArgument = parameterizedType.getActualTypeArguments()[0];
diff --git a/dorive-autoconfigure/pom.xml b/dorive-autoconfigure/pom.xml
index c4fe8243d551b5be37f218a0b30081f2fcd971cc..817b07c5de1e39956aa106eb367ac5be5b89493f 100644
--- a/dorive-autoconfigure/pom.xml
+++ b/dorive-autoconfigure/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-autoconfigure
diff --git a/dorive-autoconfigure/src/main/java/com/gitee/dorive/autoconfigure/module/DoriveModuleConfiguration.java b/dorive-autoconfigure/src/main/java/com/gitee/dorive/autoconfigure/module/DoriveModuleConfiguration.java
index f88d29e41f94e7de131d27de5452a1c1ce2fd245..2d50540a2b6699f7ed42c0dde17adbac410c44e3 100644
--- a/dorive-autoconfigure/src/main/java/com/gitee/dorive/autoconfigure/module/DoriveModuleConfiguration.java
+++ b/dorive-autoconfigure/src/main/java/com/gitee/dorive/autoconfigure/module/DoriveModuleConfiguration.java
@@ -17,22 +17,50 @@
package com.gitee.dorive.autoconfigure.module;
+import com.gitee.dorive.module.impl.filter.BoundedContextExposedBeanFilter;
+import com.gitee.dorive.module.impl.inject.BoundedContextBeanPostProcessor;
import com.gitee.dorive.module.impl.inject.ModuleAutowiredBeanPostProcessor;
+import com.gitee.dorive.module.impl.environment.ModuleRequestMappingHandlerMapping;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
+import org.springframework.boot.autoconfigure.web.servlet.WebMvcRegistrations;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.annotation.Order;
+import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
@Order(-100)
@Configuration
@ConditionalOnProperty(prefix = "dorive.module", name = "enable", havingValue = "true")
public class DoriveModuleConfiguration {
+ @Bean("boundedContextExposedBeanFilterV3")
+ @ConditionalOnMissingClass
+ public static BoundedContextExposedBeanFilter boundedContextExposedBeanFilter() {
+ return new BoundedContextExposedBeanFilter();
+ }
+
+ @Bean("boundedContextBeanPostProcessorV3")
+ @ConditionalOnMissingClass
+ public static BoundedContextBeanPostProcessor boundedContextBeanPostProcessor() {
+ return new BoundedContextBeanPostProcessor();
+ }
+
@Bean("moduleAutowiredBeanPostProcessorV3")
@ConditionalOnMissingClass
public static ModuleAutowiredBeanPostProcessor moduleAutowiredBeanPostProcessor() {
return new ModuleAutowiredBeanPostProcessor();
}
+ @Bean("moduleWebMvcRegistrationsV3")
+ @ConditionalOnMissingClass
+ public static WebMvcRegistrations moduleWebMvcRegistrations() {
+ return new WebMvcRegistrations() {
+ @Override
+ public RequestMappingHandlerMapping getRequestMappingHandlerMapping() {
+ return new ModuleRequestMappingHandlerMapping();
+ }
+ };
+ }
+
}
diff --git a/dorive-autoconfigure/src/main/java/com/gitee/dorive/autoconfigure/mybatisplus/DoriveMybatisPlusConfiguration.java b/dorive-autoconfigure/src/main/java/com/gitee/dorive/autoconfigure/mybatisplus/DoriveMybatisPlusConfiguration.java
index 4c797147a00d5efaec952e2fce5d319efb18e8cb..a38f4fd3e289f60bd0aa73fb3dc26895a985eeb6 100644
--- a/dorive-autoconfigure/src/main/java/com/gitee/dorive/autoconfigure/mybatisplus/DoriveMybatisPlusConfiguration.java
+++ b/dorive-autoconfigure/src/main/java/com/gitee/dorive/autoconfigure/mybatisplus/DoriveMybatisPlusConfiguration.java
@@ -22,7 +22,7 @@ import com.baomidou.mybatisplus.extension.plugins.MybatisPlusInterceptor;
import com.baomidou.mybatisplus.extension.plugins.inner.PaginationInnerInterceptor;
import com.gitee.dorive.core.api.common.ImplFactory;
import com.gitee.dorive.mybatis.plus.impl.DefaultImplFactory;
-import com.gitee.dorive.mybatis.plus.injector.EasySqlInjector;
+import com.gitee.dorive.mybatis.plus.impl.injector.EasySqlInjector;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.boot.env.EnvironmentPostProcessor;
diff --git a/dorive-core/pom.xml b/dorive-core/pom.xml
index bea3103f21521e6b887a1e0c3bb581c8dec84c51..3e9dfaa152e75c539ca5ab0af7aa1d1630b54b02 100644
--- a/dorive-core/pom.xml
+++ b/dorive-core/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-core
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/config/RepositoryContext.java b/dorive-core/src/main/java/com/gitee/dorive/core/config/RepositoryContext.java
index ac5ededda5133905b8c1e5f3b568363685ac45e1..840f58f68e09f2519cd2f7c112efc39b2c390d3b 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/config/RepositoryContext.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/config/RepositoryContext.java
@@ -18,9 +18,9 @@
package com.gitee.dorive.core.config;
import cn.hutool.core.util.ClassUtil;
-import com.gitee.dorive.api.util.ReflectUtils;
+import com.gitee.dorive.api.impl.util.ReflectUtils;
import com.gitee.dorive.core.api.common.RepositoryPostProcessor;
-import com.gitee.dorive.core.repository.AbstractContextRepository;
+import com.gitee.dorive.core.impl.repository.AbstractContextRepository;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanDefinition;
@@ -47,7 +47,7 @@ public class RepositoryContext implements BeanFactoryPostProcessor {
if (StringUtils.isNotBlank(beanClassName) && !beanClassName.startsWith("org.springframework.")) {
Class> beanClass = ClassUtil.loadClass(beanClassName);
if (AbstractContextRepository.class.isAssignableFrom(beanClass)) {
- Class> entityClass = ReflectUtils.getFirstArgumentType(beanClass);
+ Class> entityClass = ReflectUtils.getFirstTypeArgument(beanClass);
ENTITY_REPOSITORY_MAP.put(entityClass, beanClass);
}
}
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/entity/executor/Criterion.java b/dorive-core/src/main/java/com/gitee/dorive/core/entity/executor/Criterion.java
index ff13143d8d58dc084b75110fe408085a66e4853d..b54d6f60e6353cf4b6d4832cf71cbdb6bc9936ef 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/entity/executor/Criterion.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/entity/executor/Criterion.java
@@ -17,7 +17,7 @@
package com.gitee.dorive.core.entity.executor;
-import com.gitee.dorive.core.util.CriterionUtils;
+import com.gitee.dorive.core.impl.util.CriterionUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/entity/executor/Example.java b/dorive-core/src/main/java/com/gitee/dorive/core/entity/executor/Example.java
index 50e08f38ec1ece4bebbaaa2790fdf7990959c9dc..736c75ac71139414cc7a36d91bebb3ca3ead1457 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/entity/executor/Example.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/entity/executor/Example.java
@@ -19,7 +19,7 @@ package com.gitee.dorive.core.entity.executor;
import com.gitee.dorive.api.constant.core.Operator;
import com.gitee.dorive.api.constant.core.Order;
-import com.gitee.dorive.core.util.StringUtils;
+import com.gitee.dorive.core.impl.util.StringUtils;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/context/AdaptiveMatcher.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/context/AdaptiveMatcher.java
index 1b3ceab8840ce77d92c094ebfa5d00bc46abdddd..0d8cb89ead102a65fde124a33d3173d47383f8fe 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/context/AdaptiveMatcher.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/context/AdaptiveMatcher.java
@@ -21,7 +21,7 @@ import com.gitee.dorive.core.api.context.Matcher;
import com.gitee.dorive.core.api.context.Options;
import com.gitee.dorive.core.api.context.Selector;
import com.gitee.dorive.core.entity.enums.MatcherType;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.Getter;
import lombok.Setter;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/endpoint/BindEndpoint.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/endpoint/BindEndpoint.java
index 8b2f7314f55a1bbe4b1269dbc231b205af378c76..51cf00746a7b9c9a2c4813d5322456c76589656e 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/endpoint/BindEndpoint.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/endpoint/BindEndpoint.java
@@ -18,7 +18,7 @@
package com.gitee.dorive.core.impl.endpoint;
import com.gitee.dorive.api.entity.core.FieldDefinition;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.Getter;
import lombok.Setter;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/ContextExecutor.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/ContextExecutor.java
index 1f41721a7877e09d5f912970c79909bc1624839e..fbea3dd20412cbac739e06dc5b384b3c93663d19 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/ContextExecutor.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/executor/ContextExecutor.java
@@ -25,8 +25,8 @@ import com.gitee.dorive.core.entity.executor.Result;
import com.gitee.dorive.core.entity.operation.EntityOp;
import com.gitee.dorive.core.entity.operation.Operation;
import com.gitee.dorive.core.entity.operation.cop.Query;
-import com.gitee.dorive.core.repository.AbstractContextRepository;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.AbstractContextRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.Getter;
import lombok.Setter;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/factory/DefaultEntityFactory.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/factory/DefaultEntityFactory.java
index 7a2b22959eb539090d1b2ff4c4a11e4d12412b43..5367f246115df234bd2b36addeb404913c8c3d99 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/factory/DefaultEntityFactory.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/factory/DefaultEntityFactory.java
@@ -26,7 +26,7 @@ import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.factory.EntityAdapter;
import com.gitee.dorive.core.api.factory.EntityFactory;
import com.gitee.dorive.core.api.factory.EntityMapper;
-import com.gitee.dorive.core.entity.common.BoundedContext;
+import com.gitee.dorive.api.entity.BoundedContext;
import com.gitee.dorive.core.entity.common.EntityStoreInfo;
import com.gitee.dorive.core.entity.enums.Domain;
import com.gitee.dorive.core.entity.factory.FieldConverter;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/AdaptiveEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/AdaptiveEntityHandler.java
index 5c4b8783cf5b6e7a03de6258b4cda49e3ca95f91..bc9e363b6a98b22d1ac5d957108956c5e649520a 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/AdaptiveEntityHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/AdaptiveEntityHandler.java
@@ -23,7 +23,7 @@ import com.gitee.dorive.core.entity.enums.JoinType;
import com.gitee.dorive.core.impl.handler.joiner.MultiEntityHandler;
import com.gitee.dorive.core.impl.handler.joiner.SingleEntityHandler;
import com.gitee.dorive.core.impl.handler.joiner.UnionEntityHandler;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/BatchEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/BatchEntityHandler.java
index a0499b3b97aa658bff7eb4be845595611f709886..78973cc9429f12800b0a9cc07c8af1a05df74fcd 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/BatchEntityHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/BatchEntityHandler.java
@@ -19,8 +19,8 @@ package com.gitee.dorive.core.impl.handler;
import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.executor.EntityHandler;
-import com.gitee.dorive.core.repository.AbstractContextRepository;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.AbstractContextRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.Data;
import java.util.ArrayList;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/ContextMatchEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/ContextMatchEntityHandler.java
index 691830733265fce9a972f09830df09121cf7d9b6..e1b4d6ca27a98774dc74003ebfe11573800876e1 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/ContextMatchEntityHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/ContextMatchEntityHandler.java
@@ -19,7 +19,7 @@ package com.gitee.dorive.core.impl.handler;
import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.executor.EntityHandler;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/DelegatedEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/DelegatedEntityHandler.java
index 15cecd5da896d8e4515d2be229cb92733e46707e..9e57373a40f8b6f67cbfad15f37fe01c8ad25ee1 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/DelegatedEntityHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/DelegatedEntityHandler.java
@@ -19,7 +19,7 @@ package com.gitee.dorive.core.impl.handler;
import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.executor.EntityHandler;
-import com.gitee.dorive.core.repository.AbstractContextRepository;
+import com.gitee.dorive.core.impl.repository.AbstractContextRepository;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/ValueFilterEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/ValueFilterEntityHandler.java
index 66d8df0078b1e1db22e64777679a57402633442a..082362688fafaff6c76433301649f2b43fff9957 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/ValueFilterEntityHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/ValueFilterEntityHandler.java
@@ -21,7 +21,7 @@ import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.executor.EntityHandler;
import com.gitee.dorive.core.impl.binder.ValueRouteBinder;
import com.gitee.dorive.core.impl.resolver.BinderResolver;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/eo/BatchEntityOpHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/eo/BatchEntityOpHandler.java
index f611f9a549113844fed7d14421964a44e17c3a6c..9e33012f821527b96f2bde0253b83725c83adaf4 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/eo/BatchEntityOpHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/eo/BatchEntityOpHandler.java
@@ -27,9 +27,9 @@ import com.gitee.dorive.core.entity.operation.eop.Insert;
import com.gitee.dorive.core.entity.operation.eop.InsertOrUpdate;
import com.gitee.dorive.core.entity.operation.eop.Update;
import com.gitee.dorive.core.impl.factory.OperationFactory;
-import com.gitee.dorive.core.repository.AbstractContextRepository;
-import com.gitee.dorive.core.repository.CommonRepository;
-import com.gitee.dorive.core.util.CollectionUtils;
+import com.gitee.dorive.core.impl.repository.AbstractContextRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
+import com.gitee.dorive.core.impl.util.CollectionUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/eo/DelegatedEntityOpHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/eo/DelegatedEntityOpHandler.java
index 3ce12301659988fe25e5a14cbb9fe15868db1cc0..96f920f5715490721c5afad79511120b0b756b9c 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/eo/DelegatedEntityOpHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/eo/DelegatedEntityOpHandler.java
@@ -25,7 +25,7 @@ import com.gitee.dorive.core.entity.operation.eop.Insert;
import com.gitee.dorive.core.entity.operation.eop.InsertOrUpdate;
import com.gitee.dorive.core.entity.operation.eop.Update;
import com.gitee.dorive.core.impl.factory.OperationFactory;
-import com.gitee.dorive.core.repository.AbstractContextRepository;
+import com.gitee.dorive.core.impl.repository.AbstractContextRepository;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/AbstractEntityJoiner.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/AbstractEntityJoiner.java
index 0d5d662291054e700739d51d05e3be1e3695c6ca..871b32de076a7646770225e679c89d7bfb437a97 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/AbstractEntityJoiner.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/AbstractEntityJoiner.java
@@ -26,7 +26,7 @@ import com.gitee.dorive.core.entity.operation.cop.Query;
import com.gitee.dorive.core.impl.binder.WeakBinder;
import com.gitee.dorive.core.impl.factory.OperationFactory;
import com.gitee.dorive.core.impl.resolver.BinderResolver;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.Getter;
import lombok.Setter;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/MultiEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/MultiEntityHandler.java
index 8871eafc72e3e9203ae38adc6af79058c99915ad..e6ff738622e28483c5df2f1760cd44dbd92666c9 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/MultiEntityHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/MultiEntityHandler.java
@@ -23,8 +23,8 @@ import com.gitee.dorive.core.entity.executor.InnerExample;
import com.gitee.dorive.core.entity.executor.Result;
import com.gitee.dorive.core.impl.binder.AbstractBinder;
import com.gitee.dorive.core.impl.binder.StrongBinder;
-import com.gitee.dorive.core.repository.CommonRepository;
-import com.gitee.dorive.core.util.MultiInBuilder;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
+import com.gitee.dorive.core.impl.util.MultiInBuilder;
import lombok.Getter;
import lombok.Setter;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/SingleEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/SingleEntityHandler.java
index e6a80c8fa558298cace0a694ca01b9f69738d2f2..4a1a6e6b00620cdea6e566e948e2a721bdd5f320 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/SingleEntityHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/SingleEntityHandler.java
@@ -22,7 +22,7 @@ import com.gitee.dorive.core.entity.executor.Example;
import com.gitee.dorive.core.entity.executor.InnerExample;
import com.gitee.dorive.core.entity.executor.Result;
import com.gitee.dorive.core.impl.binder.StrongBinder;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.Getter;
import lombok.Setter;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/UnionEntityHandler.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/UnionEntityHandler.java
index 3f3167e04c4d72509b5119ae95492574b6e1f998..34fd525cce44b20abdf910773f358b6060a7fe1f 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/UnionEntityHandler.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/handler/joiner/UnionEntityHandler.java
@@ -24,7 +24,7 @@ import com.gitee.dorive.core.entity.executor.InnerExample;
import com.gitee.dorive.core.entity.executor.Result;
import com.gitee.dorive.core.entity.executor.UnionExample;
import com.gitee.dorive.core.impl.binder.StrongBinder;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.Getter;
import lombok.Setter;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractContextRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractContextRepository.java
similarity index 91%
rename from dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractContextRepository.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractContextRepository.java
index ec30eac7d85d7342bd04cd25f93823a3dff529f7..8ddee9c5074ac2e4cecbcb1c3c8111d38aed8113 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractContextRepository.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractContextRepository.java
@@ -15,10 +15,11 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.repository;
+package com.gitee.dorive.core.impl.repository;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.util.StrUtil;
+import com.gitee.dorive.api.api.BoundedContextAware;
import com.gitee.dorive.api.constant.core.Order;
import com.gitee.dorive.api.entity.core.EntityDefinition;
import com.gitee.dorive.api.entity.core.EntityElement;
@@ -27,7 +28,7 @@ import com.gitee.dorive.api.entity.core.def.OrderDef;
import com.gitee.dorive.api.entity.core.def.RepositoryDef;
import com.gitee.dorive.api.impl.core.EntityDefinitionResolver;
import com.gitee.dorive.api.impl.core.EntityElementResolver;
-import com.gitee.dorive.api.util.ReflectUtils;
+import com.gitee.dorive.api.impl.util.ReflectUtils;
import com.gitee.dorive.core.api.common.RepositoryPostProcessor;
import com.gitee.dorive.core.api.executor.EntityHandler;
import com.gitee.dorive.core.api.executor.EntityOpHandler;
@@ -35,7 +36,7 @@ import com.gitee.dorive.core.api.executor.Executor;
import com.gitee.dorive.core.api.factory.EntityFactory;
import com.gitee.dorive.core.api.factory.EntityMapper;
import com.gitee.dorive.core.config.RepositoryContext;
-import com.gitee.dorive.core.entity.common.BoundedContext;
+import com.gitee.dorive.api.entity.BoundedContext;
import com.gitee.dorive.core.entity.common.EntityStoreInfo;
import com.gitee.dorive.core.entity.executor.OrderBy;
import com.gitee.dorive.core.entity.factory.FieldConverter;
@@ -66,9 +67,11 @@ import java.util.concurrent.ConcurrentHashMap;
@Getter
@Setter
-public abstract class AbstractContextRepository extends AbstractRepository implements ApplicationContextAware, InitializingBean {
+public abstract class AbstractContextRepository extends AbstractRepository implements ApplicationContextAware, BoundedContextAware, InitializingBean {
private ApplicationContext applicationContext;
+ private BoundedContext boundedContext;
+
private RepositoryDef repositoryDef;
private Map repositoryMap = new LinkedHashMap<>();
private CommonRepository rootRepository;
@@ -81,13 +84,19 @@ public abstract class AbstractContextRepository extends AbstractRepositor
this.applicationContext = applicationContext;
}
+ @Override
+ public void setBoundedContext(BoundedContext boundedContext) {
+ this.boundedContext = boundedContext;
+ }
+
@Override
public void afterPropertiesSet() throws Exception {
Class> repositoryClass = this.getClass();
- Class> entityClass = ReflectUtils.getFirstArgumentType(repositoryClass);
+ Class> entityClass = ReflectUtils.getFirstTypeArgument(repositoryClass);
prepareRepositoryDef(repositoryClass, entityClass);
Assert.notNull(repositoryDef, "The @Repository does not exist! type: {}", repositoryClass.getName());
+ resetBoundedContextIfNecessary();
EntityDefinitionResolver entityDefinitionResolver = new EntityDefinitionResolver();
EntityDefinition entityDefinition = entityDefinitionResolver.resolve(entityClass);
@@ -120,6 +129,15 @@ public abstract class AbstractContextRepository extends AbstractRepositor
}
}
+ protected void resetBoundedContextIfNecessary() {
+ String boundedContextName = repositoryDef.getBoundedContext();
+ if (StringUtils.isNotBlank(boundedContextName)) {
+ if (applicationContext.containsBean(boundedContextName)) {
+ this.boundedContext = applicationContext.getBean(boundedContextName, BoundedContext.class);
+ }
+ }
+ }
+
private CommonRepository newRepository(EntityElement entityElement) {
resetEntityDef(entityElement);
@@ -213,15 +231,8 @@ public abstract class AbstractContextRepository extends AbstractRepositor
defaultEntityFactory.setEntityElement(entityElement);
defaultEntityFactory.setEntityStoreInfo(entityStoreInfo);
defaultEntityFactory.setEntityMapper(entityMapper);
- // 边界上下文
- String boundedContextName = repositoryDef.getBoundedContext();
- if (StringUtils.isNotBlank(boundedContextName)) {
- defaultEntityFactory.setBoundedContextName(boundedContextName);
- if (applicationContext.containsBean(boundedContextName)) {
- BoundedContext boundedContext = (BoundedContext) applicationContext.getBean(boundedContextName);
- defaultEntityFactory.setBoundedContext(boundedContext);
- }
- }
+ defaultEntityFactory.setBoundedContextName(repositoryDef.getBoundedContext());
+ defaultEntityFactory.setBoundedContext(boundedContext);
}
return entityFactory;
}
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractGenericRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractGenericRepository.java
similarity index 97%
rename from dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractGenericRepository.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractGenericRepository.java
index ece29829ed2787c4ff0d39f210a9c4164cc3fe30..858174babdba496b764d22fb176f4f35a86f0dae 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractGenericRepository.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractGenericRepository.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.repository;
+package com.gitee.dorive.core.impl.repository;
import cn.hutool.core.lang.Assert;
import com.gitee.dorive.core.api.context.Context;
@@ -27,7 +27,7 @@ import com.gitee.dorive.core.entity.operation.eop.Delete;
import com.gitee.dorive.core.entity.operation.eop.Insert;
import com.gitee.dorive.core.entity.operation.eop.Update;
import com.gitee.dorive.core.impl.factory.OperationFactory;
-import com.gitee.dorive.core.util.ExampleUtils;
+import com.gitee.dorive.core.impl.util.ExampleUtils;
import java.util.List;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractProxyRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractProxyRepository.java
similarity index 98%
rename from dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractProxyRepository.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractProxyRepository.java
index 1bdf7abb92979b8e83174b281a1347b59fee41b2..a1c8dd99fc369c8a695e912c82a299b8ea5ec2b3 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractProxyRepository.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractProxyRepository.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.repository;
+package com.gitee.dorive.core.impl.repository;
import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.context.Options;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractRepository.java
similarity index 99%
rename from dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractRepository.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractRepository.java
index 75e213632b0291d2d10fc961649a6b0be4c6245e..ff105e682d9c182438a2a50c5c958c870518a83f 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/AbstractRepository.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/AbstractRepository.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.repository;
+package com.gitee.dorive.core.impl.repository;
import cn.hutool.core.lang.Assert;
import com.gitee.dorive.api.entity.core.EntityElement;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/CommonRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/CommonRepository.java
similarity index 98%
rename from dorive-core/src/main/java/com/gitee/dorive/core/repository/CommonRepository.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/CommonRepository.java
index 0b2c8462ebec24d353ebca6f04e88684fb26e2ae..11f463df1d23e8191a6998072ef77dc6a4ec95d6 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/CommonRepository.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/CommonRepository.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.repository;
+package com.gitee.dorive.core.impl.repository;
import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.context.Matcher;
@@ -33,7 +33,7 @@ import com.gitee.dorive.core.entity.operation.eop.InsertOrUpdate;
import com.gitee.dorive.core.entity.operation.eop.Update;
import com.gitee.dorive.core.impl.binder.StrongBinder;
import com.gitee.dorive.core.impl.resolver.BinderResolver;
-import com.gitee.dorive.core.util.ExampleUtils;
+import com.gitee.dorive.core.impl.util.ExampleUtils;
import lombok.Getter;
import lombok.Setter;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/repository/DefaultRepository.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/DefaultRepository.java
similarity index 95%
rename from dorive-core/src/main/java/com/gitee/dorive/core/repository/DefaultRepository.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/DefaultRepository.java
index 4c3554bd0f5dd501bd1192a5e2616c27855e1602..b95091ad0e891f0b2d39718ecec8ddc39e5283f1 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/repository/DefaultRepository.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/repository/DefaultRepository.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.repository;
+package com.gitee.dorive.core.impl.repository;
import lombok.Getter;
import lombok.NoArgsConstructor;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/resolver/BinderResolver.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/resolver/BinderResolver.java
index aef5f22a7fc4f1e74188e1b37bc27442333620ad..ad0b9bdcbbfcb4b95310a18bcf89cd60e7f61098 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/resolver/BinderResolver.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/resolver/BinderResolver.java
@@ -36,8 +36,8 @@ import com.gitee.dorive.core.impl.binder.*;
import com.gitee.dorive.core.impl.endpoint.BindEndpoint;
import com.gitee.dorive.core.impl.endpoint.FieldEndpoint;
import com.gitee.dorive.core.impl.processor.SpELProcessor;
-import com.gitee.dorive.core.repository.AbstractContextRepository;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.AbstractContextRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import org.springframework.context.ApplicationContext;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/impl/resolver/DerivedRepositoryResolver.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/resolver/DerivedRepositoryResolver.java
index e4d5c214bf63ce620aef4d4c2671ba6f913af73e..1f52319b68000ccee2dc174b91e8c330c1c369a9 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/impl/resolver/DerivedRepositoryResolver.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/resolver/DerivedRepositoryResolver.java
@@ -21,7 +21,7 @@ import com.gitee.dorive.api.entity.core.def.RepositoryDef;
import com.gitee.dorive.core.api.executor.EntityHandler;
import com.gitee.dorive.core.api.executor.EntityOpHandler;
import com.gitee.dorive.core.api.executor.Executor;
-import com.gitee.dorive.core.repository.AbstractContextRepository;
+import com.gitee.dorive.core.impl.repository.AbstractContextRepository;
import lombok.Data;
import org.springframework.context.ApplicationContext;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/util/CollectionUtils.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/CollectionUtils.java
similarity index 96%
rename from dorive-core/src/main/java/com/gitee/dorive/core/util/CollectionUtils.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/util/CollectionUtils.java
index ca16d4b508115f00680f5062f34b798edfbfd95b..2792159bb532d16b81fe579ed9fd88bb7d599970 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/util/CollectionUtils.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/CollectionUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.util;
+package com.gitee.dorive.core.impl.util;
import java.util.ArrayList;
import java.util.Collection;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/util/CriterionUtils.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/CriterionUtils.java
similarity index 98%
rename from dorive-core/src/main/java/com/gitee/dorive/core/util/CriterionUtils.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/util/CriterionUtils.java
index 286b514c6fa7783e4f43dfb232896cc6ac268fa1..1afc0b9054b820334e4272e1f3eb5ce1898a4c85 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/util/CriterionUtils.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/CriterionUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.util;
+package com.gitee.dorive.core.impl.util;
import cn.hutool.core.date.DateUtil;
import cn.hutool.extra.spring.SpringUtil;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/util/ExampleUtils.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/ExampleUtils.java
similarity index 98%
rename from dorive-core/src/main/java/com/gitee/dorive/core/util/ExampleUtils.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/util/ExampleUtils.java
index 67c97e2013a560697497f7c81828bf42f0d6f5bd..a12a54698a92333a6517b6fa54823b10223a3f14 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/util/ExampleUtils.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/ExampleUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.util;
+package com.gitee.dorive.core.impl.util;
import com.gitee.dorive.core.entity.executor.Criterion;
import com.gitee.dorive.core.entity.executor.Example;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/util/MultiInBuilder.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/MultiInBuilder.java
similarity index 98%
rename from dorive-core/src/main/java/com/gitee/dorive/core/util/MultiInBuilder.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/util/MultiInBuilder.java
index 9bfc4e4739aca9fa6ac2c25059ae6e8adf50bc34..888369d47e597daae6733dcaf5c2c2d5843e7b23 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/util/MultiInBuilder.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/MultiInBuilder.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.util;
+package com.gitee.dorive.core.impl.util;
import cn.hutool.core.util.StrUtil;
import com.gitee.dorive.api.constant.core.Operator;
diff --git a/dorive-core/src/main/java/com/gitee/dorive/core/util/StringUtils.java b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/StringUtils.java
similarity index 97%
rename from dorive-core/src/main/java/com/gitee/dorive/core/util/StringUtils.java
rename to dorive-core/src/main/java/com/gitee/dorive/core/impl/util/StringUtils.java
index e50a346bf1acfe011a012aff09aa801b2c65eaca..2380d6e9f441fd781be22647219cf120b3bb6079 100644
--- a/dorive-core/src/main/java/com/gitee/dorive/core/util/StringUtils.java
+++ b/dorive-core/src/main/java/com/gitee/dorive/core/impl/util/StringUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.core.util;
+package com.gitee.dorive.core.impl.util;
import java.util.ArrayList;
import java.util.Arrays;
diff --git a/dorive-event/pom.xml b/dorive-event/pom.xml
index 532eb2480df3c1489f94a232eba33142c92f0e7d..bbb0e760b653b3696b8a07d012748c8509cad0ef 100644
--- a/dorive-event/pom.xml
+++ b/dorive-event/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-event
diff --git a/dorive-event/src/main/java/com/gitee/dorive/event/repository/AbstractEventRepository.java b/dorive-event/src/main/java/com/gitee/dorive/event/impl/repository/AbstractEventRepository.java
similarity index 94%
rename from dorive-event/src/main/java/com/gitee/dorive/event/repository/AbstractEventRepository.java
rename to dorive-event/src/main/java/com/gitee/dorive/event/impl/repository/AbstractEventRepository.java
index 58205acedbfd2d959f7087c6d22c1527d5dde4ac..f93d374f2306efadad7460b0318cb20b7736fadc 100644
--- a/dorive-event/src/main/java/com/gitee/dorive/event/repository/AbstractEventRepository.java
+++ b/dorive-event/src/main/java/com/gitee/dorive/event/impl/repository/AbstractEventRepository.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.event.repository;
+package com.gitee.dorive.event.impl.repository;
import cn.hutool.core.util.ArrayUtil;
import com.gitee.dorive.api.entity.core.EntityElement;
@@ -28,7 +28,9 @@ import com.gitee.dorive.core.entity.operation.eop.Insert;
import com.gitee.dorive.core.entity.operation.eop.InsertOrUpdate;
import com.gitee.dorive.core.entity.operation.eop.Update;
import com.gitee.dorive.core.impl.factory.OperationFactory;
-import com.gitee.dorive.core.repository.*;
+import com.gitee.dorive.core.impl.repository.AbstractGenericRepository;
+import com.gitee.dorive.core.impl.repository.AbstractRepository;
+import com.gitee.dorive.core.impl.repository.DefaultRepository;
import com.gitee.dorive.event.entity.BaseEvent;
import com.gitee.dorive.event.entity.ExecutorEvent;
import com.gitee.dorive.event.entity.RepositoryEvent;
diff --git a/dorive-module/pom.xml b/dorive-module/pom.xml
index 448dfb92a3de1a1e0bd5a626b88989fd06276c49..9f3b1b3acbe48fb39187fc0ccfceaf6ba5d6535b 100644
--- a/dorive-module/pom.xml
+++ b/dorive-module/pom.xml
@@ -6,25 +6,18 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-module
- org.springframework.boot
- spring-boot-starter-web
-
-
- org.projectlombok
- lombok
+ com.gitee.digital-engine
+ dorive-api
+ ${project.version}
- org.apache.commons
- commons-lang3
-
-
- cn.hutool
- hutool-all
+ org.springframework.boot
+ spring-boot-starter-web
\ No newline at end of file
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/ConfigurationUtils.java b/dorive-module/src/main/java/com/gitee/dorive/module/api/ExposedBeanFilter.java
similarity index 60%
rename from dorive-module/src/main/java/com/gitee/dorive/module/impl/util/ConfigurationUtils.java
rename to dorive-module/src/main/java/com/gitee/dorive/module/api/ExposedBeanFilter.java
index 5a15a9f907742b52d3a7dfbbcb15c36e50f26c0d..02c6cc25f28990179fdf9ebe2acac1d64bc70de3 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/ConfigurationUtils.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/api/ExposedBeanFilter.java
@@ -15,16 +15,15 @@
* limitations under the License.
*/
-package com.gitee.dorive.module.impl.util;
+package com.gitee.dorive.module.api;
-import org.springframework.beans.factory.config.BeanDefinition;
+import com.gitee.dorive.module.entity.ModuleBeanDescriptor;
+import org.springframework.beans.factory.config.DependencyDescriptor;
-public class ConfigurationUtils {
+import java.util.Map;
- public static final String CONFIGURATION_CLASS_BEAN_DEFINITION_CLASS_NAME = "org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader$ConfigurationClassBeanDefinition";
+public interface ExposedBeanFilter {
- public static boolean isConfigurationBeanDefinition(BeanDefinition beanDefinition) {
- return CONFIGURATION_CLASS_BEAN_DEFINITION_CLASS_NAME.equals(beanDefinition.getClass().getName());
- }
+ void filterExposedCandidates(DependencyDescriptor descriptor, ModuleBeanDescriptor beanDescriptor, Map exposedCandidates);
}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/api/ModuleChecker.java b/dorive-module/src/main/java/com/gitee/dorive/module/api/ModuleChecker.java
index ffef6d7e64a6b5b75df1f4a1bfd5f1cc0bb3e769..287766981e66e0c39994178d8d842a4999ba047c 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/api/ModuleChecker.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/api/ModuleChecker.java
@@ -19,6 +19,6 @@ package com.gitee.dorive.module.api;
public interface ModuleChecker {
- void checkInjection(Class> type, Class> injectedType, Object injectedInstance);
+ void checkInjection(Class> type, Class> injectedType, Object injectedBean);
}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/entity/ModuleBeanDescriptor.java b/dorive-module/src/main/java/com/gitee/dorive/module/entity/ModuleBeanDescriptor.java
new file mode 100644
index 0000000000000000000000000000000000000000..c8aff30a091e179f62e9bf929425e30055536843
--- /dev/null
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/entity/ModuleBeanDescriptor.java
@@ -0,0 +1,33 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gitee.dorive.module.entity;
+
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import org.springframework.lang.Nullable;
+
+@Data
+@AllArgsConstructor
+public class ModuleBeanDescriptor {
+ private ModuleDefinition moduleDefinition;
+ @Nullable
+ private String beanName;
+ @Nullable
+ private Class> factoryBeanType;
+ private Class> beanType;
+}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/entity/ModuleDefinition.java b/dorive-module/src/main/java/com/gitee/dorive/module/entity/ModuleDefinition.java
index b0974e1105803cd1c92efe9b37c46934a4b45ffe..64266b5821783944e15b8e31d6124e3a07cf85ca 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/entity/ModuleDefinition.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/entity/ModuleDefinition.java
@@ -43,14 +43,16 @@ public class ModuleDefinition {
private String name;
private String version;
private String type;
+ private List tags;
private List profiles;
private List configs;
private List exports;
private List requires;
private List provides;
- private List publishes;
- private List consumes;
+ private List notifies;
+ private List waits;
private String tablePrefix;
+ private String requestPrefix;
public ModuleDefinition(Resource resource, Manifest manifest) {
Assert.notNull(resource, "The resource can not be null!");
@@ -66,16 +68,18 @@ public class ModuleDefinition {
String name = mainAttributes.getValue("Dorive-Module");
String version = mainAttributes.getValue("Dorive-Version");
- String type = mainAttributes.getValue("Dorive-Module-Type");
+ String type = mainAttributes.getValue("Dorive-Type");
+ String tags = mainAttributes.getValue("Dorive-Tags");
String profiles = mainAttributes.getValue("Dorive-Profiles");
String configs = mainAttributes.getValue("Dorive-Configs");
String exports = mainAttributes.getValue("Dorive-Exports");
String requires = mainAttributes.getValue("Dorive-Requires");
String provides = mainAttributes.getValue("Dorive-Provides");
- String publishes = mainAttributes.getValue("Dorive-Publishes");
- String consumes = mainAttributes.getValue("Dorive-Consumes");
+ String notifies = mainAttributes.getValue("Dorive-Notifies");
+ String waits = mainAttributes.getValue("Dorive-Waits");
String tablePrefix = mainAttributes.getValue("Dorive-Table-Prefix");
+ String requestPrefix = mainAttributes.getValue("Dorive-Request-Prefix");
this.originId = filterValue(originId);
this.project = filterValue(project);
@@ -85,15 +89,17 @@ public class ModuleDefinition {
this.name = filterValue(name);
this.version = filterValue(version);
this.type = filterValue(type);
+ this.tags = filterValues(tags);
this.profiles = filterValues(profiles);
this.configs = filterValues(configs);
this.exports = filterValues(exports);
this.requires = filterValues(requires);
this.provides = filterValues(provides);
- this.publishes = filterValues(publishes);
- this.consumes = filterValues(consumes);
+ this.notifies = filterValues(notifies);
+ this.waits = filterValues(waits);
this.tablePrefix = filterValue(tablePrefix);
+ this.requestPrefix = filterValue(requestPrefix);
}
private String filterValue(String value) {
@@ -125,6 +131,17 @@ public class ModuleDefinition {
return CollUtil.findOne(exports, export -> PATH_MATCHER.match(export, className)) != null;
}
+ public String getDomainPackage() {
+ List packages = new ArrayList<>(2);
+ if (StringUtils.isNotBlank(project)) {
+ packages.add(project);
+ }
+ if (StringUtils.isNotBlank(domain)) {
+ packages.add(domain);
+ }
+ return StrUtil.join(".", packages);
+ }
+
public String getBasePackage() {
List packages = new ArrayList<>(4);
if (StringUtils.isNotBlank(project)) {
@@ -183,4 +200,27 @@ public class ModuleDefinition {
}
return 2;
}
+
+ public String getPropertiesPrefix() {
+ return name + "." + version + ".";
+ }
+
+ public String getModulePathKey() {
+ return name + "." + version + ".module_path";
+ }
+
+ public String getModulePathValue() {
+ return StringUtils.isNotBlank(requestPrefix) ? requestPrefix : name + "/" + version;
+ }
+
+ @Override
+ public String toString() {
+ List paths = new ArrayList<>(5);
+ paths.add(String.valueOf(project));
+ paths.add(String.valueOf(domain));
+ paths.add(String.valueOf(subdomain));
+ paths.add(String.valueOf(name));
+ paths.add(String.valueOf(version));
+ return StrUtil.join(".", paths);
+ }
}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/SpringModularApplication.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/SpringModularApplication.java
index 5481f0b27491b3bc261bbcbf65c9cf7ab8bf40e2..676896fb4720937cb7a5190558bbc8dd542517fe 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/SpringModularApplication.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/SpringModularApplication.java
@@ -38,25 +38,26 @@ public class SpringModularApplication {
public static SpringApplicationBuilder build(Class> primarySource) {
ModuleLauncher.INSTANCE.tryLoadClasspathIdx(primarySource);
+ Set> sources = new LinkedHashSet<>();
+ Set profiles = new LinkedHashSet<>();
+ Map properties = new LinkedHashMap<>();
+ BeanNameGenerator beanNameGenerator = new ModuleAnnotationBeanNameGenerator();
+ ApplicationContextFactory applicationContextFactory = new ModuleApplicationContextFactory();
+
ModuleParser moduleParser = DefaultModuleParser.INSTANCE;
moduleParser.parse();
List moduleDefinitions = moduleParser.getModuleDefinitions();
- Set> sources = new LinkedHashSet<>();
- Set profiles = new LinkedHashSet<>();
+ sources.add(primarySource);
+ properties.put("dorive.module.enable", true);
for (ModuleDefinition moduleDefinition : moduleDefinitions) {
Class> mainClass = moduleDefinition.getMainClass();
if (mainClass != null) {
sources.add(mainClass);
}
profiles.addAll(moduleDefinition.getProfiles());
+ properties.put(moduleDefinition.getModulePathKey(), moduleDefinition.getModulePathValue());
}
- sources.add(primarySource);
-
- Map properties = new LinkedHashMap<>();
- properties.put("dorive.module.enable", true);
- BeanNameGenerator beanNameGenerator = new ModuleAnnotationBeanNameGenerator();
- ApplicationContextFactory applicationContextFactory = new ModuleApplicationContextFactory();
return new SpringApplicationBuilder(sources.toArray(new Class[0]))
.profiles(profiles.toArray(new String[0]))
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleContextAnnotationAutowireCandidateResolver.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleContextAnnotationAutowireCandidateResolver.java
index 2763bce622bf24f41c8aa8559d6359acd425ca33..e6f333e582f1f827644f8062512e3ebbedcf5913 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleContextAnnotationAutowireCandidateResolver.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleContextAnnotationAutowireCandidateResolver.java
@@ -41,11 +41,10 @@ public class ModuleContextAnnotationAutowireCandidateResolver extends ContextAnn
if (declaringClass != null && moduleParser.isUnderScanPackage(declaringClass.getName())) {
ModuleDefinition moduleDefinition = moduleParser.findModuleDefinition(declaringClass);
if (moduleDefinition != null) {
- String name = moduleDefinition.getName();
String strValue = (String) value;
if (strValue.startsWith("${") && strValue.endsWith("}")) {
strValue = StrUtil.removePrefix(strValue, "${");
- return "${" + name + "." + strValue;
+ return "${" + moduleDefinition.getPropertiesPrefix() + strValue;
}
}
}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleEnvironmentPostProcessor.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleEnvironmentPostProcessor.java
index 465c93c82d7362b237cb7dcc18808e95e5097f4e..844ffd567d76fb315ff06de9607f461ed7cf0654 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleEnvironmentPostProcessor.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleEnvironmentPostProcessor.java
@@ -59,9 +59,8 @@ public class ModuleEnvironmentPostProcessor implements EnvironmentPostProcessor,
if (source instanceof Map) {
Map map = (Map) source;
if (!map.isEmpty()) {
- String moduleName = moduleDefinition.getName();
Map newMap = new LinkedHashMap<>();
- map.forEach((key, value) -> newMap.put(moduleName + "." + key, value));
+ map.forEach((key, value) -> newMap.put(moduleDefinition.getPropertiesPrefix() + key, value));
PropertySource> newPropertySource = new OriginTrackedMapPropertySource(name, Collections.unmodifiableMap(newMap));
propertySources.replace(name, newPropertySource);
}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleRequestMappingHandlerMapping.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleRequestMappingHandlerMapping.java
new file mode 100644
index 0000000000000000000000000000000000000000..b400161dc6c54a862656739a257b85894490d46d
--- /dev/null
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/environment/ModuleRequestMappingHandlerMapping.java
@@ -0,0 +1,126 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gitee.dorive.module.impl.environment;
+
+import cn.hutool.core.util.ReflectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.gitee.dorive.module.api.ModuleParser;
+import com.gitee.dorive.module.entity.ModuleDefinition;
+import com.gitee.dorive.module.impl.parser.DefaultModuleParser;
+import com.gitee.dorive.module.impl.util.PlaceholderUtils;
+import com.gitee.dorive.module.impl.util.SpringClassUtils;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.core.annotation.MergedAnnotation;
+import org.springframework.lang.Nullable;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.servlet.mvc.condition.RequestCondition;
+import org.springframework.web.servlet.mvc.method.RequestMappingInfo;
+import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping;
+
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import java.lang.reflect.Proxy;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+
+@Getter
+@Setter
+public class ModuleRequestMappingHandlerMapping extends RequestMappingHandlerMapping {
+
+ private ModuleParser moduleParser = DefaultModuleParser.INSTANCE;
+ private Map, String[]> classRequestMappingPathsCache = new ConcurrentHashMap<>();
+
+ @Override
+ protected RequestMappingInfo createRequestMappingInfo(
+ RequestMapping requestMapping, @Nullable RequestCondition> customCondition) {
+ String[] paths = requestMapping.path();
+ paths = handlePaths(requestMapping, paths);
+ RequestMappingInfo.Builder builder = RequestMappingInfo
+ .paths(resolveEmbeddedValuesInPatterns(paths))
+ .methods(requestMapping.method())
+ .params(requestMapping.params())
+ .headers(requestMapping.headers())
+ .consumes(requestMapping.consumes())
+ .produces(requestMapping.produces())
+ .mappingName(requestMapping.name());
+ if (customCondition != null) {
+ builder.customCondition(customCondition);
+ }
+ return builder.options(getBuilderConfiguration()).build();
+ }
+
+ private String[] handlePaths(RequestMapping requestMapping, String[] paths) {
+ if (paths == null || paths.length == 0) {
+ return paths;
+ }
+ if (paths.length == 1 && !paths[0].contains("$")) {
+ return paths;
+ }
+ if (requestMapping instanceof Proxy) {
+ InvocationHandler invocationHandler = Proxy.getInvocationHandler(requestMapping);
+ if (SpringClassUtils.isSynthesizedMergedAnnotationInvocationHandler(invocationHandler)) {
+ MergedAnnotation> annotation = (MergedAnnotation>) ReflectUtil.getFieldValue(invocationHandler, "annotation");
+ Object source = annotation.getSource();
+ Class> clazz = null;
+ boolean isTypeAnnotated = false;
+ if (source instanceof Class>) {
+ clazz = (Class>) source;
+ isTypeAnnotated = true;
+
+ } else if (source instanceof Method) {
+ clazz = ((Method) source).getDeclaringClass();
+ }
+ if (clazz != null && moduleParser.isUnderScanPackage(clazz.getName())) {
+ if (isTypeAnnotated) {
+ String[] existPaths = classRequestMappingPathsCache.get(clazz);
+ if (existPaths != null) {
+ return existPaths;
+ }
+ }
+ ModuleDefinition moduleDefinition = moduleParser.findModuleDefinition(clazz);
+ if (moduleDefinition != null) {
+ String[] newPaths = addPrefixForPlaceholders(moduleDefinition.getPropertiesPrefix(), paths);
+ if (isTypeAnnotated) {
+ classRequestMappingPathsCache.put(clazz, newPaths);
+ }
+ return newPaths;
+ }
+ }
+ }
+ }
+ return paths;
+ }
+
+ private String[] addPrefixForPlaceholders(String propertiesPrefix, String[] paths) {
+ // 替换占位符
+ List pathList = new ArrayList<>(paths.length);
+ for (String path : paths) {
+ if (PlaceholderUtils.contains(path)) {
+ path = PlaceholderUtils.replace(path, strValue -> "$$P$$" + propertiesPrefix + strValue + "$$S$$");
+ path = StrUtil.replace(path, "$$P$$", "${");
+ path = StrUtil.replace(path, "$$S$$", "}");
+ }
+ pathList.add(path);
+ }
+ return pathList.toArray(new String[0]);
+ }
+
+}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/factory/ModuleDefaultListableBeanFactory.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/factory/ModuleDefaultListableBeanFactory.java
index ed87af7e90a302f5cd612a4698b69b068d3cff5f..e0ce0657fc016f39f1b88c775967e0b8514bf35d 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/factory/ModuleDefaultListableBeanFactory.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/factory/ModuleDefaultListableBeanFactory.java
@@ -20,12 +20,14 @@ package com.gitee.dorive.module.impl.factory;
import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.ReflectUtil;
import com.gitee.dorive.module.api.BeanNameEditor;
+import com.gitee.dorive.module.api.ExposedBeanFilter;
import com.gitee.dorive.module.api.ModuleParser;
+import com.gitee.dorive.module.entity.ModuleBeanDescriptor;
import com.gitee.dorive.module.entity.ModuleDefinition;
-import com.gitee.dorive.module.impl.inject.ModuleCglibSubclassingInstantiationStrategy;
import com.gitee.dorive.module.impl.environment.ModuleContextAnnotationAutowireCandidateResolver;
+import com.gitee.dorive.module.impl.inject.ModuleCglibSubclassingInstantiationStrategy;
import com.gitee.dorive.module.impl.parser.DefaultModuleParser;
-import com.gitee.dorive.module.impl.util.ConfigurationUtils;
+import com.gitee.dorive.module.impl.util.SpringClassUtils;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.lang3.StringUtils;
@@ -35,11 +37,14 @@ import org.springframework.beans.factory.config.DependencyDescriptor;
import org.springframework.beans.factory.support.BeanDefinitionRegistry;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.context.annotation.Bean;
+import org.springframework.core.annotation.AnnotationAwareOrderComparator;
import org.springframework.core.type.AnnotationMetadata;
import org.springframework.core.type.MethodMetadata;
+import org.springframework.util.ClassUtils;
import java.lang.reflect.Method;
import java.util.ArrayList;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -50,6 +55,7 @@ import static com.gitee.dorive.module.impl.util.BeanAnnotationHelper.BEAN_NAME_C
public class ModuleDefaultListableBeanFactory extends DefaultListableBeanFactory implements BeanNameEditor {
private ModuleParser moduleParser = DefaultModuleParser.INSTANCE;
+ private List exposedBeanFilters;
public ModuleDefaultListableBeanFactory() {
// 实例化策略
@@ -60,7 +66,7 @@ public class ModuleDefaultListableBeanFactory extends DefaultListableBeanFactory
@Override
public void registerBeanDefinition(String beanName, BeanDefinition beanDefinition) throws BeanDefinitionStoreException {
- if (ConfigurationUtils.isConfigurationBeanDefinition(beanDefinition)) {
+ if (SpringClassUtils.isConfigurationBeanDefinition(beanDefinition)) {
beanName = resetBeanName(beanName, beanDefinition, this);
}
super.registerBeanDefinition(beanName, beanDefinition);
@@ -96,46 +102,80 @@ public class ModuleDefaultListableBeanFactory extends DefaultListableBeanFactory
return beanName;
}
+ @Override
+ protected Map findAutowireCandidates(String beanName, Class> requiredType, DependencyDescriptor descriptor) {
+ Map candidates = super.findAutowireCandidates(beanName, requiredType, descriptor);
+ if (candidates.size() == 1) {
+ if (!SpringClassUtils.isStreamDependencyDescriptor(descriptor) && !SpringClassUtils.isMultiElementDescriptor(descriptor)) {
+ Class> declaringClass = getDeclaringClass(descriptor);
+ if (moduleParser.isUnderScanPackage(declaringClass.getName())) {
+ ModuleDefinition moduleDefinition = moduleParser.findModuleDefinition(declaringClass);
+ if (moduleDefinition != null) {
+ String candidateBeanName = candidates.keySet().iterator().next();
+ Class> targetClass = getTargetClass(candidates, candidateBeanName);
+ Class> targetDeclaringClass = getTargetDeclaringClass(candidateBeanName, targetClass);
+
+ if (moduleParser.isUnderScanPackage(targetDeclaringClass.getName())) {
+ ModuleDefinition targetModuleDefinition = moduleParser.findModuleDefinition(targetDeclaringClass);
+ if (moduleDefinition.equals(targetModuleDefinition)) { // 1、相同模块
+ return candidates;
+
+ } else if (targetModuleDefinition.isExposed(targetDeclaringClass)) { // 2、其他模块对外公开
+ ModuleBeanDescriptor beanDescriptor = new ModuleBeanDescriptor(moduleDefinition, beanName, null, declaringClass);
+ Map exposedCandidates = new HashMap<>(2);
+ exposedCandidates.put(candidateBeanName, new ModuleBeanDescriptor(targetModuleDefinition, candidateBeanName, targetDeclaringClass, targetClass));
+ // 过滤
+ invokeExposedBeanFilters(descriptor, beanDescriptor, exposedCandidates);
+ if (exposedCandidates.isEmpty()) {
+ candidates.clear();
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ return candidates;
+ }
+
@Override
protected String determineAutowireCandidate(Map candidates, DependencyDescriptor descriptor) {
String beanName = super.determineAutowireCandidate(candidates, descriptor);
if (beanName == null && candidates.size() > 1) {
- Class> declaringClass = (Class>) ReflectUtil.getFieldValue(descriptor, "declaringClass");
+ Class> declaringClass = getDeclaringClass(descriptor);
if (moduleParser.isUnderScanPackage(declaringClass.getName())) {
ModuleDefinition moduleDefinition = moduleParser.findModuleDefinition(declaringClass);
if (moduleDefinition != null) {
List candidateBeanNames = new ArrayList<>(candidates.size());
- List exposedCandidateBeanNames = new ArrayList<>(candidates.size());
+ ModuleBeanDescriptor beanDescriptor = new ModuleBeanDescriptor(moduleDefinition, null, null, declaringClass);
+ Map exposedCandidates = new HashMap<>(candidates.size() * 4 / 3 + 1);
+
for (String candidateBeanName : candidates.keySet()) {
- Class> targetClass = null;
- // class of factory bean
- BeanDefinition beanDefinition = getBeanDefinition(candidateBeanName);
- if (ConfigurationUtils.isConfigurationBeanDefinition(beanDefinition)) {
- AnnotationMetadata annotationMetadata = (AnnotationMetadata) ReflectUtil.getFieldValue(beanDefinition, "annotationMetadata");
- String className = annotationMetadata.getClassName();
- targetClass = ClassUtil.loadClass(className);
- }
- // class of bean
- if (targetClass == null) {
- targetClass = (Class>) candidates.get(candidateBeanName);
- }
- if (moduleParser.isUnderScanPackage(targetClass.getName())) {
- ModuleDefinition targetModuleDefinition = moduleParser.findModuleDefinition(targetClass);
- // 1、相同模块
- // 2、模块内对外公开
- if (moduleDefinition.equals(targetModuleDefinition)) {
+ Class> targetClass = getTargetClass(candidates, candidateBeanName);
+ Class> targetDeclaringClass = getTargetDeclaringClass(candidateBeanName, targetClass);
+
+ if (moduleParser.isUnderScanPackage(targetDeclaringClass.getName())) {
+ ModuleDefinition targetModuleDefinition = moduleParser.findModuleDefinition(targetDeclaringClass);
+ if (moduleDefinition.equals(targetModuleDefinition)) { // 1、相同模块
candidateBeanNames.add(candidateBeanName);
- } else if (targetModuleDefinition.isExposed(targetClass)) {
- exposedCandidateBeanNames.add(candidateBeanName);
+ } else if (targetModuleDefinition.isExposed(targetDeclaringClass)) { // 2、其他模块对外公开
+ exposedCandidates.put(candidateBeanName, new ModuleBeanDescriptor(targetModuleDefinition, candidateBeanName, targetDeclaringClass, targetClass));
}
}
}
+
+ // 1、相同模块
if (candidateBeanNames.size() == 1) {
return candidateBeanNames.get(0);
}
- if (candidateBeanNames.isEmpty() && exposedCandidateBeanNames.size() == 1) {
- return exposedCandidateBeanNames.get(0);
+ // 2、其他模块对外公开
+ if (candidateBeanNames.isEmpty()) {
+ // 过滤
+ invokeExposedBeanFilters(descriptor, beanDescriptor, exposedCandidates);
+ if (exposedCandidates.size() == 1) {
+ return exposedCandidates.keySet().iterator().next();
+ }
}
}
}
@@ -143,4 +183,46 @@ public class ModuleDefaultListableBeanFactory extends DefaultListableBeanFactory
return beanName;
}
+ private Class> getDeclaringClass(DependencyDescriptor descriptor) {
+ Class> declaringClass = (Class>) ReflectUtil.getFieldValue(descriptor, "containingClass");
+ if (declaringClass == null) {
+ declaringClass = (Class>) ReflectUtil.getFieldValue(descriptor, "declaringClass");
+ }
+ return declaringClass;
+ }
+
+ private Class> getTargetClass(Map candidates, String candidateBeanName) {
+ Object candidate = candidates.get(candidateBeanName);
+ return candidate instanceof Class ? (Class>) candidate : ClassUtils.getUserClass(candidate);
+ }
+
+ private Class> getTargetDeclaringClass(String candidateBeanName, Class> targetClass) {
+ BeanDefinition beanDefinition = getBeanDefinition(candidateBeanName);
+ if (SpringClassUtils.isConfigurationBeanDefinition(beanDefinition)) {
+ AnnotationMetadata annotationMetadata = (AnnotationMetadata) ReflectUtil.getFieldValue(beanDefinition, "annotationMetadata");
+ String className = annotationMetadata.getClassName();
+ return ClassUtil.loadClass(className);
+ }
+ return targetClass;
+ }
+
+ private void invokeExposedBeanFilters(DependencyDescriptor descriptor, ModuleBeanDescriptor beanDescriptor, Map exposedCandidates) {
+ if (exposedBeanFilters == null) {
+ synchronized (this) {
+ if (exposedBeanFilters == null) {
+ String[] beanNames = getBeanNamesForType(ExposedBeanFilter.class, true, false);
+ this.exposedBeanFilters = new ArrayList<>(beanNames.length);
+ for (String beanName : beanNames) {
+ ExposedBeanFilter exposedBeanFilter = getBean(beanName, ExposedBeanFilter.class);
+ exposedBeanFilters.add(exposedBeanFilter);
+ }
+ AnnotationAwareOrderComparator.sort(exposedBeanFilters);
+ }
+ }
+ }
+ for (ExposedBeanFilter exposedBeanFilter : exposedBeanFilters) {
+ exposedBeanFilter.filterExposedCandidates(descriptor, beanDescriptor, exposedCandidates);
+ }
+ }
+
}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/filter/BoundedContextExposedBeanFilter.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/filter/BoundedContextExposedBeanFilter.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c968db0498cdb92b246725a1252fc066e779409
--- /dev/null
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/filter/BoundedContextExposedBeanFilter.java
@@ -0,0 +1,47 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gitee.dorive.module.impl.filter;
+
+import com.gitee.dorive.api.entity.BoundedContext;
+import com.gitee.dorive.module.api.ExposedBeanFilter;
+import com.gitee.dorive.module.entity.ModuleBeanDescriptor;
+import com.gitee.dorive.module.entity.ModuleDefinition;
+import org.springframework.beans.factory.config.DependencyDescriptor;
+
+import java.util.Map;
+
+public class BoundedContextExposedBeanFilter implements ExposedBeanFilter {
+
+ @Override
+ public void filterExposedCandidates(DependencyDescriptor descriptor, ModuleBeanDescriptor beanDescriptor, Map exposedCandidates) {
+ Class> declaredType = descriptor.getDeclaredType();
+ if (declaredType == BoundedContext.class && !exposedCandidates.isEmpty()) {
+ ModuleDefinition moduleDefinition = beanDescriptor.getModuleDefinition();
+ String domainPackage = moduleDefinition.getDomainPackage();
+ String boundedContextName = domainPackage + ".boundedContext";
+ ModuleBeanDescriptor existModuleBeanDescriptor = exposedCandidates.get(boundedContextName);
+ // 清空
+ exposedCandidates.clear();
+ // 保留符合条件的
+ if (existModuleBeanDescriptor != null) {
+ exposedCandidates.put(boundedContextName, existModuleBeanDescriptor);
+ }
+ }
+ }
+
+}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/inject/BoundedContextBeanPostProcessor.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/inject/BoundedContextBeanPostProcessor.java
new file mode 100644
index 0000000000000000000000000000000000000000..275e390e543368ac45fc3c329ee60369ca8be5e5
--- /dev/null
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/inject/BoundedContextBeanPostProcessor.java
@@ -0,0 +1,65 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gitee.dorive.module.impl.inject;
+
+import com.gitee.dorive.api.api.BoundedContextAware;
+import com.gitee.dorive.api.entity.BoundedContext;
+import com.gitee.dorive.module.api.ModuleParser;
+import com.gitee.dorive.module.entity.ModuleDefinition;
+import com.gitee.dorive.module.impl.parser.DefaultModuleParser;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.BeanFactory;
+import org.springframework.beans.factory.BeanFactoryAware;
+import org.springframework.beans.factory.config.BeanPostProcessor;
+import org.springframework.beans.factory.support.DefaultListableBeanFactory;
+import org.springframework.util.ClassUtils;
+
+@Getter
+@Setter
+public class BoundedContextBeanPostProcessor implements BeanFactoryAware, BeanPostProcessor {
+
+ private ModuleParser moduleParser = DefaultModuleParser.INSTANCE;
+ private DefaultListableBeanFactory beanFactory;
+
+ @Override
+ public void setBeanFactory(BeanFactory beanFactory) throws BeansException {
+ this.beanFactory = (DefaultListableBeanFactory) beanFactory;
+ }
+
+ @Override
+ public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
+ Class> userClass = ClassUtils.getUserClass(bean);
+ if (moduleParser.isUnderScanPackage(userClass.getName())) {
+ if (bean instanceof BoundedContextAware) {
+ ModuleDefinition moduleDefinition = moduleParser.findModuleDefinition(userClass);
+ if (moduleDefinition != null) {
+ String domainPackage = moduleDefinition.getDomainPackage();
+ String boundedContextName = domainPackage + ".boundedContext";
+ if (beanFactory.containsBean(boundedContextName)) {
+ BoundedContext boundedContext = beanFactory.getBean(boundedContextName, BoundedContext.class);
+ ((BoundedContextAware) bean).setBoundedContext(boundedContext);
+ }
+ }
+ }
+ }
+ return bean;
+ }
+
+}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/inject/ModuleAutowiredBeanPostProcessor.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/inject/ModuleAutowiredBeanPostProcessor.java
index 3d02f16dcbb2a34e2560fe66a474180c515c5b12..8c042ff8d7a0be758d9a4ac0e49744375400ad35 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/inject/ModuleAutowiredBeanPostProcessor.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/inject/ModuleAutowiredBeanPostProcessor.java
@@ -24,7 +24,6 @@ import com.gitee.dorive.module.impl.parser.DefaultModuleParser;
import com.gitee.dorive.module.impl.util.BeanFactoryUtils;
import lombok.Getter;
import lombok.Setter;
-import org.springframework.aop.support.AopUtils;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.BeanCreationException;
import org.springframework.beans.factory.BeanFactory;
@@ -34,6 +33,7 @@ import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;
import org.springframework.core.annotation.AnnotatedElementUtils;
import org.springframework.core.annotation.AnnotationAttributes;
+import org.springframework.util.ClassUtils;
import org.springframework.util.ReflectionUtils;
import java.lang.reflect.AccessibleObject;
@@ -54,7 +54,7 @@ public class ModuleAutowiredBeanPostProcessor implements BeanFactoryAware, BeanP
@Override
public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException {
- Class> beanType = AopUtils.getTargetClass(bean);
+ Class> beanType = ClassUtils.getUserClass(bean);
if (moduleParser.isUnderScanPackage(beanType.getName())) {
try {
checkAutowiredFieldModule(beanType, bean);
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/parser/AbstractModuleParser.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/parser/AbstractModuleParser.java
index 59615633f5299a0a4e97f425ce6a1ba8a216dd1d..f14fb0dbf128d0fd6a519c874238a375593d4e4d 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/parser/AbstractModuleParser.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/parser/AbstractModuleParser.java
@@ -55,7 +55,7 @@ public abstract class AbstractModuleParser implements ModuleParser {
public void parse() {
parseModuleDefinitions();
collectScanPackages();
- checkRequiresAndImpls();
+ checkRequiresAndProvides();
}
private void parseModuleDefinitions() {
@@ -108,7 +108,7 @@ public abstract class AbstractModuleParser implements ModuleParser {
this.scanPackages.addAll(scanPackages);
}
- private void checkRequiresAndImpls() {
+ private void checkRequiresAndProvides() {
Set requires = new HashSet<>();
Set provides = new HashSet<>();
for (ModuleDefinition moduleDefinition : getModuleDefinitions()) {
@@ -117,7 +117,7 @@ public abstract class AbstractModuleParser implements ModuleParser {
}
Collection collection = CollectionUtil.subtract(requires, provides);
if (!collection.isEmpty()) {
- throw new RuntimeException("Lack of required services! service: " + StrUtil.join(", ", collection));
+ throw new RuntimeException("Lack of required resources! resources: " + StrUtil.join(", ", collection));
}
}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/parser/DefaultModuleParser.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/parser/DefaultModuleParser.java
index c4953ff44cc46b94116406587a2c79afad3269da..9ba1e79984ab90fcf3704982a35ede8b472e3a2c 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/parser/DefaultModuleParser.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/parser/DefaultModuleParser.java
@@ -19,18 +19,18 @@ package com.gitee.dorive.module.impl.parser;
import com.gitee.dorive.module.api.ModuleChecker;
import com.gitee.dorive.module.entity.ModuleDefinition;
-import org.springframework.aop.support.AopUtils;
import org.springframework.beans.factory.BeanCreationException;
+import org.springframework.util.ClassUtils;
public class DefaultModuleParser extends AbstractModuleParser implements ModuleChecker {
public static final DefaultModuleParser INSTANCE = new DefaultModuleParser();
@Override
- public void checkInjection(Class> type, Class> injectedType, Object injectedInstance) {
+ public void checkInjection(Class> type, Class> injectedType, Object injectedBean) {
doCheckInjection(type, injectedType);
- if (injectedInstance != null) {
- Class> targetClass = AopUtils.getTargetClass(injectedInstance);
+ if (injectedBean != null) {
+ Class> targetClass = ClassUtils.getUserClass(injectedBean);
if (!injectedType.equals(targetClass)) {
doCheckInjection(type, targetClass);
}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/BeanAnnotationHelper.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/BeanAnnotationHelper.java
index 7bcc3acb1639d18f38e1a27071f90ee804f99951..9eb59552db6d37837fa1fd73a49efe7a8523a86d 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/BeanAnnotationHelper.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/BeanAnnotationHelper.java
@@ -17,7 +17,6 @@
package com.gitee.dorive.module.impl.util;
-import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.ReflectUtil;
import java.lang.reflect.Field;
@@ -26,12 +25,10 @@ import java.util.Map;
public class BeanAnnotationHelper {
- public static final String BEAN_ANNOTATION_HELPER_CLASS_NAME = "org.springframework.context.annotation.BeanAnnotationHelper";
public static final Map BEAN_NAME_CACHE;
static {
- Class> beanAnnotationHelperClass = ClassUtil.loadClass(BeanAnnotationHelper.BEAN_ANNOTATION_HELPER_CLASS_NAME);
- Field beanNameCacheField = ReflectUtil.getField(beanAnnotationHelperClass, "beanNameCache");
+ Field beanNameCacheField = ReflectUtil.getField(SpringClassUtils.BEAN_ANNOTATION_HELPER, "beanNameCache");
Object beanNameCacheFieldValue = ReflectUtil.getStaticFieldValue(beanNameCacheField);
BEAN_NAME_CACHE = castValue(beanNameCacheFieldValue);
}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/BeanFactoryUtils.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/BeanFactoryUtils.java
index cacccf9193ed6b710dda243d55cf075a8385eb68..d2b08778b1cd8dd3a55d11e4674a48a880dbf734 100644
--- a/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/BeanFactoryUtils.java
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/BeanFactoryUtils.java
@@ -28,7 +28,7 @@ public class BeanFactoryUtils {
public static Class> tryGetConfigurationClass(DefaultListableBeanFactory beanFactory, Class> beanType, Object bean) {
// class of factory bean
BeanDefinition beanDefinition = BeanFactoryUtils.getBeanDefinition(beanFactory, beanType, bean);
- if (beanDefinition != null && ConfigurationUtils.isConfigurationBeanDefinition(beanDefinition)) {
+ if (SpringClassUtils.isConfigurationBeanDefinition(beanDefinition)) {
AnnotationMetadata annotationMetadata = (AnnotationMetadata) ReflectUtil.getFieldValue(beanDefinition, "annotationMetadata");
String className = annotationMetadata.getClassName();
return ClassUtil.loadClass(className);
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/PlaceholderUtils.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/PlaceholderUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..f345eb616bbad78c80b193c3088e154cd9858a04
--- /dev/null
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/PlaceholderUtils.java
@@ -0,0 +1,23 @@
+package com.gitee.dorive.module.impl.util;
+
+import org.springframework.util.PropertyPlaceholderHelper;
+
+public class PlaceholderUtils {
+
+ private static final PropertyPlaceholderHelper PROPERTY_PLACEHOLDER_HELPER =
+ new PropertyPlaceholderHelper("${", "}");
+
+ public static boolean contains(String strValue) {
+ int startIndex = strValue.indexOf("${");
+ if (startIndex != -1) {
+ int endIndex = strValue.indexOf("}", startIndex);
+ return endIndex != -1 && startIndex < endIndex;
+ }
+ return false;
+ }
+
+ public static String replace(String strValue, PropertyPlaceholderHelper.PlaceholderResolver resolver) {
+ return PROPERTY_PLACEHOLDER_HELPER.replacePlaceholders(strValue, resolver);
+ }
+
+}
diff --git a/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/SpringClassUtils.java b/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/SpringClassUtils.java
new file mode 100644
index 0000000000000000000000000000000000000000..301a875c033fb41a8794adb1d05eb5a25f165c72
--- /dev/null
+++ b/dorive-module/src/main/java/com/gitee/dorive/module/impl/util/SpringClassUtils.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gitee.dorive.module.impl.util;
+
+import cn.hutool.core.util.ClassUtil;
+import org.springframework.beans.factory.config.BeanDefinition;
+import org.springframework.beans.factory.config.DependencyDescriptor;
+
+import java.lang.reflect.InvocationHandler;
+
+public class SpringClassUtils {
+ public static final String BEAN_ANNOTATION_HELPER_NAME = "org.springframework.context.annotation.BeanAnnotationHelper";
+ public static final String CONFIGURATION_CLASS_BEAN_DEFINITION_NAME = "org.springframework.context.annotation.ConfigurationClassBeanDefinitionReader$ConfigurationClassBeanDefinition";
+ public static final String STREAM_DEPENDENCY_DESCRIPTOR_NAME = "org.springframework.beans.factory.support.DefaultListableBeanFactory$StreamDependencyDescriptor";
+ public static final String MULTI_ELEMENT_DESCRIPTOR_NAME = "org.springframework.beans.factory.support.DefaultListableBeanFactory$MultiElementDescriptor";
+ public static final String SYNTHESIZED_MERGED_ANNOTATION_INVOCATION_HANDLER_NAME = "org.springframework.core.annotation.SynthesizedMergedAnnotationInvocationHandler";
+
+ public static final Class> BEAN_ANNOTATION_HELPER = ClassUtil.loadClass(BEAN_ANNOTATION_HELPER_NAME);
+ public static final Class> CONFIGURATION_CLASS_BEAN_DEFINITION = ClassUtil.loadClass(CONFIGURATION_CLASS_BEAN_DEFINITION_NAME);
+ public static final Class> STREAM_DEPENDENCY_DESCRIPTOR = ClassUtil.loadClass(STREAM_DEPENDENCY_DESCRIPTOR_NAME);
+ public static final Class> MULTI_ELEMENT_DESCRIPTOR = ClassUtil.loadClass(MULTI_ELEMENT_DESCRIPTOR_NAME);
+ public static final Class> SYNTHESIZED_MERGED_ANNOTATION_INVOCATION_HANDLER = ClassUtil.loadClass(SYNTHESIZED_MERGED_ANNOTATION_INVOCATION_HANDLER_NAME);
+
+ public static boolean isConfigurationBeanDefinition(BeanDefinition beanDefinition) {
+ return beanDefinition != null && beanDefinition.getClass() == CONFIGURATION_CLASS_BEAN_DEFINITION;
+ }
+
+ public static boolean isStreamDependencyDescriptor(DependencyDescriptor descriptor) {
+ return descriptor != null && descriptor.getClass() == STREAM_DEPENDENCY_DESCRIPTOR;
+ }
+
+ public static boolean isMultiElementDescriptor(DependencyDescriptor descriptor) {
+ return descriptor != null && descriptor.getClass() == MULTI_ELEMENT_DESCRIPTOR;
+ }
+
+ public static boolean isSynthesizedMergedAnnotationInvocationHandler(InvocationHandler invocationHandler) {
+ return invocationHandler != null && invocationHandler.getClass() == SYNTHESIZED_MERGED_ANNOTATION_INVOCATION_HANDLER;
+ }
+}
diff --git a/dorive-mybatis-plus/pom.xml b/dorive-mybatis-plus/pom.xml
index 4267b85a699702b6673dc01c192bad1d3f1c6837..abed11f1be972ca8dbcd726102423b1ad30764b3 100644
--- a/dorive-mybatis-plus/pom.xml
+++ b/dorive-mybatis-plus/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-mybatis-plus
diff --git a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/entity/LambdaExample.java b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/entity/LambdaExample.java
index f90551a45357a837dc4cbab61bbf572051c7b23c..941f9010f1e8cbda0baad2fd6f92bfc09d3743da 100644
--- a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/entity/LambdaExample.java
+++ b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/entity/LambdaExample.java
@@ -21,7 +21,7 @@ import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
import com.gitee.dorive.api.constant.core.Operator;
import com.gitee.dorive.core.entity.executor.Criterion;
import com.gitee.dorive.core.entity.executor.Example;
-import com.gitee.dorive.mybatis.plus.util.LambdaUtils;
+import com.gitee.dorive.mybatis.plus.impl.util.LambdaUtils;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
diff --git a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/executor/MybatisPlusExecutor.java b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/executor/MybatisPlusExecutor.java
similarity index 99%
rename from dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/executor/MybatisPlusExecutor.java
rename to dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/executor/MybatisPlusExecutor.java
index 08fc929fa3d98afa19d3008c0c2e4a6c83c50253..2a4b195d28def170eb1c8467e838ce5c1b88e16d 100644
--- a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/executor/MybatisPlusExecutor.java
+++ b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/executor/MybatisPlusExecutor.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.mybatis.plus.executor;
+package com.gitee.dorive.mybatis.plus.impl.executor;
import cn.hutool.core.bean.BeanUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
diff --git a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/injector/EasySqlInjector.java b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/injector/EasySqlInjector.java
similarity index 96%
rename from dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/injector/EasySqlInjector.java
rename to dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/injector/EasySqlInjector.java
index 1341521ddefb299e5e6d34a6d5ae08949dc3856f..53a886819a08a31f9d63c7f1669f87abf3432803 100644
--- a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/injector/EasySqlInjector.java
+++ b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/injector/EasySqlInjector.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.mybatis.plus.injector;
+package com.gitee.dorive.mybatis.plus.impl.injector;
import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.core.injector.AbstractMethod;
diff --git a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/repository/MybatisPlusRepository.java b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/repository/MybatisPlusRepository.java
similarity index 97%
rename from dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/repository/MybatisPlusRepository.java
rename to dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/repository/MybatisPlusRepository.java
index 9b5754fa369f76c3f0aff3b850666ea8e7f77e0e..a267ae1b5387a0d7e85951217a10f98d8f9f631c 100644
--- a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/repository/MybatisPlusRepository.java
+++ b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/repository/MybatisPlusRepository.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.mybatis.plus.repository;
+package com.gitee.dorive.mybatis.plus.impl.repository;
import cn.hutool.core.lang.Assert;
import cn.hutool.core.map.MapUtil;
@@ -31,12 +31,12 @@ import com.gitee.dorive.core.api.common.MethodInvoker;
import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.executor.Executor;
import com.gitee.dorive.core.entity.common.EntityStoreInfo;
-import com.gitee.dorive.mybatis.plus.executor.MybatisPlusExecutor;
+import com.gitee.dorive.mybatis.plus.impl.executor.MybatisPlusExecutor;
import com.gitee.dorive.mybatis.plus.impl.DefaultMethodInvoker;
import com.gitee.dorive.sql.impl.handler.SqlCustomQueryHandler;
import com.gitee.dorive.query.api.QueryHandler;
import com.gitee.dorive.query.entity.enums.QueryMethod;
-import com.gitee.dorive.ref.repository.AbstractRefRepository;
+import com.gitee.dorive.ref.impl.repository.AbstractRefRepository;
import com.gitee.dorive.sql.api.CountQuerier;
import com.gitee.dorive.sql.api.SqlRunner;
import com.gitee.dorive.sql.entity.common.CountQuery;
diff --git a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/util/LambdaUtils.java b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/util/LambdaUtils.java
similarity index 96%
rename from dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/util/LambdaUtils.java
rename to dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/util/LambdaUtils.java
index e1fe8f1dcbf29643f33696ebd9b35cc72d06de78..329b66f7a75e7e6b0ab9182b6fbf9ab85e12a581 100644
--- a/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/util/LambdaUtils.java
+++ b/dorive-mybatis-plus/src/main/java/com/gitee/dorive/mybatis/plus/impl/util/LambdaUtils.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.mybatis.plus.util;
+package com.gitee.dorive.mybatis.plus.impl.util;
import com.baomidou.mybatisplus.core.toolkit.support.LambdaMeta;
import com.baomidou.mybatisplus.core.toolkit.support.SFunction;
diff --git a/dorive-query/pom.xml b/dorive-query/pom.xml
index 064fcfa3391ebb2de212fa4f8abaf4bb32259674..910a60b7aed5ab6cebbceb256489e40d201acc14 100644
--- a/dorive-query/pom.xml
+++ b/dorive-query/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-query
diff --git a/dorive-query/src/main/java/com/gitee/dorive/query/entity/MergedRepository.java b/dorive-query/src/main/java/com/gitee/dorive/query/entity/MergedRepository.java
index 02dabfc60bb0c92926feef4e4a7bd705c7672a77..68f6056e65e4de5bfc6ad57d7620fd7460c2d713 100644
--- a/dorive-query/src/main/java/com/gitee/dorive/query/entity/MergedRepository.java
+++ b/dorive-query/src/main/java/com/gitee/dorive/query/entity/MergedRepository.java
@@ -19,8 +19,8 @@ package com.gitee.dorive.query.entity;
import com.gitee.dorive.core.impl.binder.StrongBinder;
import com.gitee.dorive.core.impl.binder.ValueRouteBinder;
-import com.gitee.dorive.core.repository.CommonRepository;
-import com.gitee.dorive.core.repository.DefaultRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.DefaultRepository;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
diff --git a/dorive-query/src/main/java/com/gitee/dorive/query/entity/QueryConfig.java b/dorive-query/src/main/java/com/gitee/dorive/query/entity/QueryConfig.java
index 29aa2276bba92bd2dcc417f0bc3f977b4d31f0b5..4eb22cd1c18ec415dd70ddf49d6bbbefb3ebf3f1 100644
--- a/dorive-query/src/main/java/com/gitee/dorive/query/entity/QueryConfig.java
+++ b/dorive-query/src/main/java/com/gitee/dorive/query/entity/QueryConfig.java
@@ -19,7 +19,7 @@ package com.gitee.dorive.query.entity;
import com.gitee.dorive.api.entity.core.EntityElement;
import com.gitee.dorive.query.impl.resolver.QueryExampleResolver;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import lombok.Data;
import java.util.List;
diff --git a/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/ConfigQueryHandler.java b/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/ConfigQueryHandler.java
index 40b34a5982d40f7c7b0d913fce63e95ac1d90e95..b30154b1150477284936fe351bf49db74962792a 100644
--- a/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/ConfigQueryHandler.java
+++ b/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/ConfigQueryHandler.java
@@ -22,7 +22,7 @@ import com.gitee.dorive.query.api.QueryHandler;
import com.gitee.dorive.query.entity.QueryConfig;
import com.gitee.dorive.query.entity.QueryContext;
import com.gitee.dorive.query.impl.resolver.QueryTypeResolver;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import lombok.AllArgsConstructor;
import java.util.Map;
diff --git a/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/ContextMatchQueryHandler.java b/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/ContextMatchQueryHandler.java
index 98b1ab2bb986c7a103227db9cf2a5220c4f709f6..d3e6df6630cf2989596767ec80776de64fd8be72 100644
--- a/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/ContextMatchQueryHandler.java
+++ b/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/ContextMatchQueryHandler.java
@@ -20,7 +20,7 @@ package com.gitee.dorive.query.impl.handler;
import com.gitee.dorive.core.api.context.Matcher;
import com.gitee.dorive.query.api.QueryHandler;
import com.gitee.dorive.query.entity.QueryContext;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import lombok.AllArgsConstructor;
@AllArgsConstructor
diff --git a/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/StepwiseQueryHandler.java b/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/StepwiseQueryHandler.java
index 8b0d01564b845cfeb4304ebc05b1417d67c59e8b..0eb49465590e8a3203a7ebb7f3f4235dd7ade058 100644
--- a/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/StepwiseQueryHandler.java
+++ b/dorive-query/src/main/java/com/gitee/dorive/query/impl/handler/StepwiseQueryHandler.java
@@ -23,8 +23,8 @@ import com.gitee.dorive.core.impl.binder.AbstractBinder;
import com.gitee.dorive.core.impl.binder.StrongBinder;
import com.gitee.dorive.core.impl.binder.ValueRouteBinder;
import com.gitee.dorive.core.impl.resolver.BinderResolver;
-import com.gitee.dorive.core.repository.CommonRepository;
-import com.gitee.dorive.core.util.MultiInBuilder;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
+import com.gitee.dorive.core.impl.util.MultiInBuilder;
import com.gitee.dorive.query.entity.MergedRepository;
import com.gitee.dorive.query.entity.QueryContext;
import com.gitee.dorive.query.entity.QueryUnit;
diff --git a/dorive-query/src/main/java/com/gitee/dorive/query/repository/AbstractQueryRepository.java b/dorive-query/src/main/java/com/gitee/dorive/query/impl/repository/AbstractQueryRepository.java
similarity index 97%
rename from dorive-query/src/main/java/com/gitee/dorive/query/repository/AbstractQueryRepository.java
rename to dorive-query/src/main/java/com/gitee/dorive/query/impl/repository/AbstractQueryRepository.java
index d92456eefb7f450da5cb41a5cefc45ca3377d7b5..86aa8a7484bb4e57162500b61cbac5757a42ce4d 100644
--- a/dorive-query/src/main/java/com/gitee/dorive/query/repository/AbstractQueryRepository.java
+++ b/dorive-query/src/main/java/com/gitee/dorive/query/impl/repository/AbstractQueryRepository.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.query.repository;
+package com.gitee.dorive.query.impl.repository;
import com.gitee.dorive.api.entity.core.def.RepositoryDef;
import com.gitee.dorive.core.api.context.Context;
@@ -23,7 +23,7 @@ import com.gitee.dorive.core.api.context.Options;
import com.gitee.dorive.core.entity.executor.Example;
import com.gitee.dorive.core.entity.executor.Page;
import com.gitee.dorive.core.entity.executor.Result;
-import com.gitee.dorive.event.repository.AbstractEventRepository;
+import com.gitee.dorive.event.impl.repository.AbstractEventRepository;
import com.gitee.dorive.query.api.QueryHandler;
import com.gitee.dorive.query.api.QueryRepository;
import com.gitee.dorive.query.entity.QueryContext;
diff --git a/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/MergedRepositoryResolver.java b/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/MergedRepositoryResolver.java
index 09cd01bb8bae890936889e3a089671929c1c4ac2..33ded1f87e217351d25f87d4c9ccbf15ebd09552 100644
--- a/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/MergedRepositoryResolver.java
+++ b/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/MergedRepositoryResolver.java
@@ -20,12 +20,12 @@ package com.gitee.dorive.query.impl.resolver;
import com.gitee.dorive.core.impl.binder.StrongBinder;
import com.gitee.dorive.core.impl.binder.ValueRouteBinder;
import com.gitee.dorive.core.impl.resolver.BinderResolver;
-import com.gitee.dorive.core.repository.AbstractContextRepository;
-import com.gitee.dorive.core.repository.AbstractRepository;
-import com.gitee.dorive.core.repository.CommonRepository;
-import com.gitee.dorive.core.repository.DefaultRepository;
+import com.gitee.dorive.core.impl.repository.AbstractContextRepository;
+import com.gitee.dorive.core.impl.repository.AbstractRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.DefaultRepository;
import com.gitee.dorive.query.entity.MergedRepository;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
diff --git a/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/QueryExampleResolver.java b/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/QueryExampleResolver.java
index 141fe5eae04540dfb77cd9e8dc3759c86d22ba8c..64fec98320d055d7a13bdc5b47adca172b7b4db7 100644
--- a/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/QueryExampleResolver.java
+++ b/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/QueryExampleResolver.java
@@ -26,7 +26,7 @@ import com.gitee.dorive.api.entity.query.QueryDefinition;
import com.gitee.dorive.api.entity.query.QueryFieldDefinition;
import com.gitee.dorive.api.entity.query.def.QueryFieldDef;
import com.gitee.dorive.core.entity.executor.*;
-import com.gitee.dorive.core.util.StringUtils;
+import com.gitee.dorive.core.impl.util.StringUtils;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/QueryTypeResolver.java b/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/QueryTypeResolver.java
index 2971770222d9e7ccb3ea5768e804be30e9b549ab..1b60634c36c2901473b265dd0aa6204673f893bc 100644
--- a/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/QueryTypeResolver.java
+++ b/dorive-query/src/main/java/com/gitee/dorive/query/impl/resolver/QueryTypeResolver.java
@@ -23,10 +23,10 @@ import com.gitee.dorive.api.entity.query.QueryDefinition;
import com.gitee.dorive.api.entity.query.QueryFieldDefinition;
import com.gitee.dorive.api.entity.query.def.QueryFieldDef;
import com.gitee.dorive.api.impl.query.QueryDefinitionResolver;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import com.gitee.dorive.query.entity.MergedRepository;
import com.gitee.dorive.query.entity.QueryConfig;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import lombok.Data;
import java.util.*;
diff --git a/dorive-ref/pom.xml b/dorive-ref/pom.xml
index b0a40caeda139e930b5f0502b08535b813a274f6..0242cc312305e7287b6a528dd312aa848e77463c 100644
--- a/dorive-ref/pom.xml
+++ b/dorive-ref/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-ref
diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/api/Ref.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/api/Ref.java
index 746fc2a275fb988b8d84a227722d331ef013e93e..06c613156cbc65b64f81949e5f2ce4bab0046080 100644
--- a/dorive-ref/src/main/java/com/gitee/dorive/ref/api/Ref.java
+++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/api/Ref.java
@@ -18,7 +18,7 @@
package com.gitee.dorive.ref.api;
import com.gitee.dorive.query.api.QueryRepository;
-import com.gitee.dorive.ref.repository.AbstractRefRepository;
+import com.gitee.dorive.ref.impl.repository.AbstractRefRepository;
public interface Ref extends QueryRepository {
diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefImpl.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/injector/RefImpl.java
similarity index 94%
rename from dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefImpl.java
rename to dorive-ref/src/main/java/com/gitee/dorive/ref/impl/injector/RefImpl.java
index 4decd685f4f63df35952f3fd993c30b0c5e06580..835efc320adbea27ee5da27e5d34cee05b27f782 100644
--- a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefImpl.java
+++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/injector/RefImpl.java
@@ -15,15 +15,15 @@
* limitations under the License.
*/
-package com.gitee.dorive.ref.impl;
+package com.gitee.dorive.ref.impl.injector;
import com.gitee.dorive.core.api.context.Options;
import com.gitee.dorive.core.api.executor.EntityHandler;
import com.gitee.dorive.core.entity.executor.Page;
-import com.gitee.dorive.core.repository.AbstractProxyRepository;
+import com.gitee.dorive.core.impl.repository.AbstractProxyRepository;
import com.gitee.dorive.ref.api.Ref;
import com.gitee.dorive.ref.api.RefObj;
-import com.gitee.dorive.ref.repository.AbstractRefRepository;
+import com.gitee.dorive.ref.impl.repository.AbstractRefRepository;
import lombok.Data;
import lombok.EqualsAndHashCode;
diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefInjector.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/injector/RefInjector.java
similarity index 95%
rename from dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefInjector.java
rename to dorive-ref/src/main/java/com/gitee/dorive/ref/impl/injector/RefInjector.java
index b95b86b59cb907367cb1756fc3740db6b94cbf75..7eb3b4845eb0f7211293c106ab86d5e422ce9979 100644
--- a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefInjector.java
+++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/injector/RefInjector.java
@@ -15,12 +15,12 @@
* limitations under the License.
*/
-package com.gitee.dorive.ref.impl;
+package com.gitee.dorive.ref.impl.injector;
import cn.hutool.core.util.ReflectUtil;
import com.gitee.dorive.core.api.executor.EntityHandler;
import com.gitee.dorive.ref.api.Ref;
-import com.gitee.dorive.ref.repository.AbstractRefRepository;
+import com.gitee.dorive.ref.impl.repository.AbstractRefRepository;
import lombok.Data;
import java.lang.reflect.Field;
diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefObjImpl.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/injector/RefObjImpl.java
similarity index 95%
rename from dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefObjImpl.java
rename to dorive-ref/src/main/java/com/gitee/dorive/ref/impl/injector/RefObjImpl.java
index 1d7a4c73c5f1eadd37b1ebc846157b3cb1e60436..ff89241bcab9b9800d8d964c29cec429c04c9d29 100644
--- a/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/RefObjImpl.java
+++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/injector/RefObjImpl.java
@@ -15,13 +15,13 @@
* limitations under the License.
*/
-package com.gitee.dorive.ref.impl;
+package com.gitee.dorive.ref.impl.injector;
import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.context.Options;
import com.gitee.dorive.core.api.executor.EntityHandler;
import com.gitee.dorive.core.entity.context.DefaultContext;
-import com.gitee.dorive.core.repository.AbstractRepository;
+import com.gitee.dorive.core.impl.repository.AbstractRepository;
import com.gitee.dorive.ref.api.RefObj;
import lombok.AllArgsConstructor;
import lombok.Data;
diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/repository/AbstractInnerRepository.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/repository/AbstractInnerRepository.java
similarity index 97%
rename from dorive-ref/src/main/java/com/gitee/dorive/ref/repository/AbstractInnerRepository.java
rename to dorive-ref/src/main/java/com/gitee/dorive/ref/impl/repository/AbstractInnerRepository.java
index 48babf71a4c0923d24d0a563a0eb3023c1951e8c..fc3f12effe3864175c61990e088d6095b7a36292 100644
--- a/dorive-ref/src/main/java/com/gitee/dorive/ref/repository/AbstractInnerRepository.java
+++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/repository/AbstractInnerRepository.java
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-package com.gitee.dorive.ref.repository;
+package com.gitee.dorive.ref.impl.repository;
import com.gitee.dorive.core.api.context.Context;
import com.gitee.dorive.core.api.context.Options;
@@ -23,8 +23,8 @@ import com.gitee.dorive.core.entity.context.DefaultContext;
import com.gitee.dorive.core.entity.executor.Example;
import com.gitee.dorive.core.entity.executor.InnerExample;
import com.gitee.dorive.core.entity.executor.Page;
-import com.gitee.dorive.core.util.ExampleUtils;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.core.impl.util.ExampleUtils;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import java.util.List;
diff --git a/dorive-ref/src/main/java/com/gitee/dorive/ref/repository/AbstractRefRepository.java b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/repository/AbstractRefRepository.java
similarity index 92%
rename from dorive-ref/src/main/java/com/gitee/dorive/ref/repository/AbstractRefRepository.java
rename to dorive-ref/src/main/java/com/gitee/dorive/ref/impl/repository/AbstractRefRepository.java
index 6ac49ba22e4fc7135576362e15eb9af037d15502..99be48c887fbdf818ebda20dd3830ab71bfc9cff 100644
--- a/dorive-ref/src/main/java/com/gitee/dorive/ref/repository/AbstractRefRepository.java
+++ b/dorive-ref/src/main/java/com/gitee/dorive/ref/impl/repository/AbstractRefRepository.java
@@ -15,10 +15,10 @@
* limitations under the License.
*/
-package com.gitee.dorive.ref.repository;
+package com.gitee.dorive.ref.impl.repository;
import com.gitee.dorive.core.api.executor.EntityHandler;
-import com.gitee.dorive.ref.impl.RefInjector;
+import com.gitee.dorive.ref.impl.injector.RefInjector;
public abstract class AbstractRefRepository extends AbstractInnerRepository {
diff --git a/dorive-spring-boot-starter/pom.xml b/dorive-spring-boot-starter/pom.xml
index 89d3d57956fc6d969fc6f0e4e9d707c0d970431f..ae4f8cbfbcdd1fe53cd7f0e492c1a32270a03411 100644
--- a/dorive-spring-boot-starter/pom.xml
+++ b/dorive-spring-boot-starter/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-spring-boot-starter
diff --git a/dorive-sql/pom.xml b/dorive-sql/pom.xml
index 64b7211a43666722207f76ca93d4dc3359808353..63f68ca91d0bf863ff31b7e26fb0962ce4b45353 100644
--- a/dorive-sql/pom.xml
+++ b/dorive-sql/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-sql
diff --git a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlBuildQueryHandler.java b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlBuildQueryHandler.java
index fe7e3b96b8ed1fe443edb159610818c77a1aabe1..168a01f071ea90a2b2049f3e8c8cc987250dad93 100644
--- a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlBuildQueryHandler.java
+++ b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlBuildQueryHandler.java
@@ -25,7 +25,7 @@ import com.gitee.dorive.core.entity.executor.Result;
import com.gitee.dorive.query.entity.QueryContext;
import com.gitee.dorive.query.entity.QueryUnit;
import com.gitee.dorive.query.impl.handler.AbstractQueryUnitQueryHandler;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import com.gitee.dorive.sql.impl.segment.SegmentResolver;
import lombok.AllArgsConstructor;
import lombok.Getter;
diff --git a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlCustomQueryHandler.java b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlCustomQueryHandler.java
index 7f705bea67b7d24697b6aecf4a75512a726c2e2a..046a3546f75deae6b5c33d971af5b6bec4eeb041 100644
--- a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlCustomQueryHandler.java
+++ b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlCustomQueryHandler.java
@@ -24,7 +24,7 @@ import com.gitee.dorive.core.entity.common.EntityStoreInfo;
import com.gitee.dorive.core.entity.executor.*;
import com.gitee.dorive.query.entity.QueryContext;
import com.gitee.dorive.query.entity.QueryUnit;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import lombok.Getter;
import lombok.Setter;
diff --git a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlExecuteQueryHandler.java b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlExecuteQueryHandler.java
index 34b62d47a39d71a4a83cb32bb5a8beb6a8877ddd..d1f8be6c4b6e25fa0f2261d9e3c58302d18a5bda 100644
--- a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlExecuteQueryHandler.java
+++ b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/handler/SqlExecuteQueryHandler.java
@@ -25,7 +25,7 @@ import com.gitee.dorive.core.entity.executor.Result;
import com.gitee.dorive.query.entity.QueryContext;
import com.gitee.dorive.query.entity.QueryUnit;
import com.gitee.dorive.query.entity.enums.ResultType;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import com.gitee.dorive.sql.api.SqlRunner;
import com.gitee.dorive.sql.entity.segment.ArgSegment;
import com.gitee.dorive.sql.entity.segment.SelectSegment;
diff --git a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/querier/SqlCountQuerier.java b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/querier/SqlCountQuerier.java
index eb9ed45203994fbd265b711042fa02a09f54ab4d..194011afe6372d6d5e2f14e1ac68a07821380e2e 100644
--- a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/querier/SqlCountQuerier.java
+++ b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/querier/SqlCountQuerier.java
@@ -25,7 +25,7 @@ import com.gitee.dorive.query.entity.QueryContext;
import com.gitee.dorive.query.entity.QueryUnit;
import com.gitee.dorive.query.entity.enums.QueryMethod;
import com.gitee.dorive.query.entity.enums.ResultType;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import com.gitee.dorive.sql.api.CountQuerier;
import com.gitee.dorive.sql.api.SqlRunner;
import com.gitee.dorive.sql.entity.common.CountQuery;
diff --git a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/segment/SegmentResolver.java b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/segment/SegmentResolver.java
index 1f86e7b993a4d0dce3b1d27609457ae5c5cd1276..aae9745e024f5971e2ec7762054e5940ad523d0b 100644
--- a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/segment/SegmentResolver.java
+++ b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/segment/SegmentResolver.java
@@ -26,13 +26,13 @@ import com.gitee.dorive.core.impl.binder.StrongBinder;
import com.gitee.dorive.core.impl.binder.ValueFilterBinder;
import com.gitee.dorive.core.impl.binder.ValueRouteBinder;
import com.gitee.dorive.core.impl.resolver.BinderResolver;
-import com.gitee.dorive.core.repository.CommonRepository;
-import com.gitee.dorive.core.util.CriterionUtils;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
+import com.gitee.dorive.core.impl.util.CriterionUtils;
import com.gitee.dorive.query.entity.MergedRepository;
import com.gitee.dorive.query.entity.QueryContext;
import com.gitee.dorive.query.entity.QueryUnit;
import com.gitee.dorive.query.impl.resolver.MergedRepositoryResolver;
-import com.gitee.dorive.query.repository.AbstractQueryRepository;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
import com.gitee.dorive.sql.api.Segment;
import com.gitee.dorive.sql.entity.segment.*;
import lombok.AllArgsConstructor;
diff --git a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/segment/SelectSegmentBuilder.java b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/segment/SelectSegmentBuilder.java
index c7b9b7eb6c5359b4a724fe8bd0510a1d88e7d67f..9c1dc55500b9d01b1fc54da8cfccbe75321d133f 100644
--- a/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/segment/SelectSegmentBuilder.java
+++ b/dorive-sql/src/main/java/com/gitee/dorive/sql/impl/segment/SelectSegmentBuilder.java
@@ -18,7 +18,7 @@
package com.gitee.dorive.sql.impl.segment;
import com.gitee.dorive.core.api.context.Selector;
-import com.gitee.dorive.core.repository.CommonRepository;
+import com.gitee.dorive.core.impl.repository.CommonRepository;
import com.gitee.dorive.query.entity.MergedRepository;
import com.gitee.dorive.query.entity.QueryContext;
import com.gitee.dorive.query.entity.QueryUnit;
diff --git a/dorive-test/pom.xml b/dorive-test/pom.xml
index 7f93c87eef8d0293e3d04d56ad9ee27fb62f0d4b..6173f98fb2c6640981d5bcf9f890242c7aee881d 100644
--- a/dorive-test/pom.xml
+++ b/dorive-test/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-test
diff --git a/dorive-web/pom.xml b/dorive-web/pom.xml
index 51edc6b4adea87f123449544b6d2f3db65e4d310..d81c1bca1686ee6eefbd7dc6b117592a345582cb 100644
--- a/dorive-web/pom.xml
+++ b/dorive-web/pom.xml
@@ -6,7 +6,7 @@
com.gitee.digital-engine
dorive
- 3.5.0.8
+ 3.5.1
dorive-web
diff --git a/dorive-web/src/main/java/com/gitee/dorive/web/impl/service/BaseService.java b/dorive-web/src/main/java/com/gitee/dorive/web/impl/service/BaseService.java
new file mode 100644
index 0000000000000000000000000000000000000000..b2bedcbbabc18e82f134ff48f95dc9099e056b3b
--- /dev/null
+++ b/dorive-web/src/main/java/com/gitee/dorive/web/impl/service/BaseService.java
@@ -0,0 +1,94 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.gitee.dorive.web.impl.service;
+
+import com.gitee.dorive.api.impl.util.ReflectUtils;
+import com.gitee.dorive.core.api.context.Options;
+import com.gitee.dorive.core.config.RepositoryContext;
+import com.gitee.dorive.core.entity.executor.Page;
+import com.gitee.dorive.query.impl.repository.AbstractQueryRepository;
+import com.gitee.dorive.web.entity.ResObject;
+import lombok.Getter;
+import lombok.Setter;
+import org.springframework.beans.BeansException;
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.context.ApplicationContext;
+import org.springframework.context.ApplicationContextAware;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+
+@Getter
+@Setter
+public class BaseService implements ApplicationContextAware, InitializingBean {
+
+ private ApplicationContext applicationContext;
+ private AbstractQueryRepository repository;
+
+ @Override
+ public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
+ this.applicationContext = applicationContext;
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public void afterPropertiesSet() {
+ Class> entityClass = ReflectUtils.getFirstTypeArgument(getClass());
+ Class> repositoryClass = RepositoryContext.findRepositoryClass(entityClass);
+ this.repository = (AbstractQueryRepository) applicationContext.getBean(repositoryClass);
+ }
+
+ @Transactional(rollbackFor = Exception.class)
+ public ResObject