diff --git a/pom.xml b/pom.xml
index 9f06925..e7ac4af 100644
--- a/pom.xml
+++ b/pom.xml
@@ -10,24 +10,25 @@
relax-spring-boot-starter
A Rapid Development Tool Based on Springboot.
- Single table addition, deletion, modification, and querying can be quickly achieved through annotations, as well as entity reverse parsing into tables.
+ Single table addition, deletion, modification, and querying can be quickly achieved through annotations, as well
+ as entity reverse parsing into tables.
https://github.com/shenjingwaa/relax
-
-
-
-
-
-
+
+
+ haifeng-yan
+ 1131368173@qq.com
+ +8
+
-
-
-
-
-
-
-
+
+ shenjingwa
+ huao0329@gmail.com
+ https://github.com/shenjingwaa/
+ +8
+
+
@@ -104,135 +105,134 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+ org.projectlombok
+ lombok
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+
+ ${java.version}
+ UTF-8
+
+
+
+
+ org.sonatype.plugins
+ nexus-staging-maven-plugin
+ 1.6.7
+ true
+
+ ossrh
+ https://s01.oss.sonatype.org/
+ true
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-source-plugin
+ 2.2.1
+
+
+ attach-sources
+
+ jar-no-fork
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-javadoc-plugin
+ 2.9.1
+
+ private
+ true
+ UTF-8
+ UTF-8
+ UTF-8
+ -Xdoclint:none
+
+
+
+ package
+
+ jar
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-gpg-plugin
+ 1.5
+
+
+ sign-artifacts
+ verify
+
+ sign
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-deploy-plugin
+ 2.8.2
+
+
+
+
+
+
+
+ ossrh
+ https://s01.oss.sonatype.org/content/repositories/snapshots
+
+
+ ossrh
+ https://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
+
+
+
+
+
+
+ The Apache Software License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0.txt
+ repo
+
+
+
+
+ https://github.com/shenjingwaa/relax
+ scm:git@github.com/shenjingwaa/relax.git
+ scm:git@github.com/shenjingwaa/relax.git
+
diff --git a/src/main/java/com/relax/relax/common/annotation/RelaxProxy.java b/src/main/java/com/relax/relax/common/annotation/RelaxProxy.java
new file mode 100644
index 0000000..d57d8dd
--- /dev/null
+++ b/src/main/java/com/relax/relax/common/annotation/RelaxProxy.java
@@ -0,0 +1,19 @@
+package com.relax.relax.common.annotation;
+
+import com.relax.relax.common.enums.ProxyType;
+import com.relax.relax.common.proxy.RelaxViewProxy;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+public @interface RelaxProxy {
+ Class> relaxClass();
+
+ Class extends RelaxViewProxy> afterClass() default RelaxViewProxy.class;
+
+ ProxyType proxyType();
+}
diff --git a/src/main/java/com/relax/relax/common/controller/BaseController.java b/src/main/java/com/relax/relax/common/controller/BaseController.java
index 692c284..1f0bfde 100644
--- a/src/main/java/com/relax/relax/common/controller/BaseController.java
+++ b/src/main/java/com/relax/relax/common/controller/BaseController.java
@@ -1,30 +1,19 @@
package com.relax.relax.common.controller;
-import com.alibaba.fastjson2.JSON;
import com.relax.relax.common.annotation.MappingType;
import com.relax.relax.common.container.EntityHandleContainer;
import com.relax.relax.common.domain.RelaxResult;
-import com.relax.relax.common.constants.ValidationGroup;
import com.relax.relax.common.enums.CrudOperationType;
-import com.relax.relax.common.enums.ProxyMethodType;
-import com.relax.relax.common.enums.SqlType;
import com.relax.relax.common.executor.SqlOperationExecutor;
-import com.relax.relax.common.utils.BeanUtil;
import com.relax.relax.common.utils.RelaxProxyUtil;
import com.relax.relax.common.utils.SpringUtil;
-import com.relax.relax.common.utils.ValidationUtil;
-import org.springframework.util.Assert;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
-import java.lang.reflect.Field;
-import java.util.List;
import java.util.Map;
-import java.util.Objects;
-import java.util.stream.Collectors;
@SuppressWarnings("unused")
public class BaseController {
diff --git a/src/main/java/com/relax/relax/common/executor/ProxyExecutor.java b/src/main/java/com/relax/relax/common/executor/ProxyExecutor.java
index 7f2467c..5a63c53 100644
--- a/src/main/java/com/relax/relax/common/executor/ProxyExecutor.java
+++ b/src/main/java/com/relax/relax/common/executor/ProxyExecutor.java
@@ -9,7 +9,6 @@
import javax.servlet.http.HttpServletResponse;
import java.util.ArrayList;
import java.util.List;
-import java.util.Objects;
public abstract class ProxyExecutor {
List proxyContainer = new ArrayList<>();
@@ -24,7 +23,7 @@ public abstract class ProxyExecutor {
public void addProxyBefore(Class extends RelaxViewProxy> clazz, RelaxViewProxy proxy) {
proxy.setExecutor(this);
-
+ if (proxyContainer.contains(proxy)) return;
int index = getProxyIndex(clazz);
if (index >= 0) {
proxyContainer.add(index, proxy);
@@ -35,7 +34,7 @@ public void addProxyBefore(Class extends RelaxViewProxy> clazz, RelaxViewProxy
public void addProxyAfter(Class extends RelaxViewProxy> clazz, RelaxViewProxy proxy) {
proxy.setExecutor(this);
-
+ if (proxyContainer.contains(proxy)) return;
int index = getProxyIndex(clazz);
if (index >= 0) {
proxyContainer.add(index + 1, proxy);
@@ -46,7 +45,7 @@ public void addProxyAfter(Class extends RelaxViewProxy> clazz, RelaxViewProxy
public void addProxy(RelaxViewProxy proxy) {
proxy.setExecutor(this);
-
+ if (proxyContainer.contains(proxy)) return;
proxyContainer.add(proxy);
}
diff --git a/src/main/java/com/relax/relax/common/listener/ProxyExecutorCreateListener.java b/src/main/java/com/relax/relax/common/listener/ProxyExecutorCreateListener.java
index 98122c2..ebf2f02 100644
--- a/src/main/java/com/relax/relax/common/listener/ProxyExecutorCreateListener.java
+++ b/src/main/java/com/relax/relax/common/listener/ProxyExecutorCreateListener.java
@@ -1,16 +1,19 @@
package com.relax.relax.common.listener;
import com.relax.relax.common.annotation.RelaxClass;
+import com.relax.relax.common.annotation.RelaxProxy;
import com.relax.relax.common.cofig.RelaxProxyConfiguration;
import com.relax.relax.common.container.EntityHandleContainer;
import com.relax.relax.common.executor.ProxyAfterExecutor;
import com.relax.relax.common.executor.ProxyBeforeExecutor;
+import com.relax.relax.common.proxy.RelaxViewProxy;
import com.relax.relax.common.proxy.node.conversion.DefaultInfoConversionProxyNode;
import com.relax.relax.common.proxy.node.format.DefaultEntityFormatProxyNode;
import com.relax.relax.common.proxy.node.format.DefaultInfoFormatProxyNode;
import com.relax.relax.common.proxy.node.format.DefaultListFormatProxyNode;
import com.relax.relax.common.proxy.node.format.DefaultPageFormatProxyNode;
import com.relax.relax.common.proxy.node.validate.*;
+import com.relax.relax.common.utils.RelaxProxyUtil;
import com.relax.relax.common.utils.SpringUtil;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.context.event.ApplicationReadyEvent;
@@ -31,14 +34,9 @@ public ProxyExecutorCreateListener(ApplicationContext context) {
public void onApplicationEvent(ApplicationReadyEvent event) {
context.getBeansWithAnnotation(RelaxClass.class).forEach((beanName, bean) -> {
loadingBeforeExecutor(bean);
-
loadingAfterExecutor(bean);
-
- try {
- SpringUtil.getBean(RelaxProxyConfiguration.class).registerProxy();
- } catch (Exception ignored) {
- }
});
+ registerProxy();
}
private static void loadingBeforeExecutor(Object bean) {
@@ -70,4 +68,24 @@ private static void loadingAfterExecutor(Object bean) {
afterExecutor.addProxy(new DefaultInfoFormatProxyNode());
SpringUtil.addBean(afterExecutor, bean.getClass().getName() + "_" + ProxyAfterExecutor.class.getSimpleName());
}
+
+ private void registerProxy() {
+ try {
+ SpringUtil.getBean(RelaxProxyConfiguration.class).registerProxy();
+ } catch (Exception ignored) {
+ }
+ registerAfter();
+ }
+
+ private void registerAfter() {
+ context.getBeansWithAnnotation(RelaxProxy.class).forEach((beanName, bean) -> {
+ RelaxProxy proxy = bean.getClass().getAnnotation(RelaxProxy.class);
+ if (proxy.afterClass() != RelaxViewProxy.class) {
+ RelaxProxyUtil.addProxyAfter(proxy.relaxClass(), proxy.afterClass(), (RelaxViewProxy) bean, proxy.proxyType());
+ } else {
+ RelaxProxyUtil.addProxy(proxy.relaxClass(), (RelaxViewProxy) bean, proxy.proxyType());
+ }
+ });
+ }
+
}
diff --git a/src/main/java/com/relax/relax/common/proxy/node/format/DefaultPageFormatProxyNode.java b/src/main/java/com/relax/relax/common/proxy/node/format/DefaultPageFormatProxyNode.java
index cdf4b15..477dde9 100644
--- a/src/main/java/com/relax/relax/common/proxy/node/format/DefaultPageFormatProxyNode.java
+++ b/src/main/java/com/relax/relax/common/proxy/node/format/DefaultPageFormatProxyNode.java
@@ -1,7 +1,6 @@
package com.relax.relax.common.proxy.node.format;
import com.relax.relax.common.enums.ProxyMethodType;
-import com.relax.relax.common.proxy.RelaxViewAfterProxy;
import com.relax.relax.common.proxy.RelaxViewBeforeProxy;
import com.relax.relax.common.utils.BeanUtil;
diff --git a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateAddProxyNode.java b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateAddProxyNode.java
index d56ceb6..76cdbc3 100644
--- a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateAddProxyNode.java
+++ b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateAddProxyNode.java
@@ -3,7 +3,6 @@
import com.relax.relax.common.constants.ValidationGroup;
import com.relax.relax.common.enums.ProxyMethodType;
import com.relax.relax.common.proxy.RelaxViewBeforeProxy;
-import com.relax.relax.common.proxy.RelaxViewProxy;
import com.relax.relax.common.utils.ValidationUtil;
import javax.servlet.http.HttpServletRequest;
diff --git a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateDeleteProxyNode.java b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateDeleteProxyNode.java
index 8339118..5b00e8b 100644
--- a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateDeleteProxyNode.java
+++ b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateDeleteProxyNode.java
@@ -3,7 +3,6 @@
import com.relax.relax.common.constants.ValidationGroup;
import com.relax.relax.common.enums.ProxyMethodType;
import com.relax.relax.common.proxy.RelaxViewBeforeProxy;
-import com.relax.relax.common.proxy.RelaxViewProxy;
import com.relax.relax.common.utils.ValidationUtil;
import javax.servlet.http.HttpServletRequest;
diff --git a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateInfoProxyNode.java b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateInfoProxyNode.java
index f19c769..9a9572f 100644
--- a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateInfoProxyNode.java
+++ b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateInfoProxyNode.java
@@ -3,7 +3,6 @@
import com.relax.relax.common.constants.ValidationGroup;
import com.relax.relax.common.enums.ProxyMethodType;
import com.relax.relax.common.proxy.RelaxViewBeforeProxy;
-import com.relax.relax.common.proxy.RelaxViewProxy;
import com.relax.relax.common.utils.ValidationUtil;
import javax.servlet.http.HttpServletRequest;
diff --git a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateListProxyNode.java b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateListProxyNode.java
index 7d09533..e530d40 100644
--- a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateListProxyNode.java
+++ b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateListProxyNode.java
@@ -3,7 +3,6 @@
import com.relax.relax.common.constants.ValidationGroup;
import com.relax.relax.common.enums.ProxyMethodType;
import com.relax.relax.common.proxy.RelaxViewBeforeProxy;
-import com.relax.relax.common.proxy.RelaxViewProxy;
import com.relax.relax.common.utils.ValidationUtil;
import javax.servlet.http.HttpServletRequest;
diff --git a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidatePageProxyNode.java b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidatePageProxyNode.java
index a4668f5..767916e 100644
--- a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidatePageProxyNode.java
+++ b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidatePageProxyNode.java
@@ -3,7 +3,6 @@
import com.relax.relax.common.constants.ValidationGroup;
import com.relax.relax.common.enums.ProxyMethodType;
import com.relax.relax.common.proxy.RelaxViewBeforeProxy;
-import com.relax.relax.common.proxy.RelaxViewProxy;
import com.relax.relax.common.utils.ValidationUtil;
import javax.servlet.http.HttpServletRequest;
diff --git a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateUpdateProxyNode.java b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateUpdateProxyNode.java
index 15e5478..796c5bb 100644
--- a/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateUpdateProxyNode.java
+++ b/src/main/java/com/relax/relax/common/proxy/node/validate/DefaultValidateUpdateProxyNode.java
@@ -3,7 +3,6 @@
import com.relax.relax.common.constants.ValidationGroup;
import com.relax.relax.common.enums.ProxyMethodType;
import com.relax.relax.common.proxy.RelaxViewBeforeProxy;
-import com.relax.relax.common.proxy.RelaxViewProxy;
import com.relax.relax.common.utils.ValidationUtil;
import javax.servlet.http.HttpServletRequest;