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} + ${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 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 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 clazz, RelaxViewProxy public void addProxyAfter(Class 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 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;