From eb3617181e17824249f3c937a9aa453fe971d4f4 Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Wed, 27 Jul 2022 19:23:59 +0800 Subject: [PATCH] =?UTF-8?q?web=E6=8B=A6=E6=88=AA=E5=99=A8=E7=9B=B8?= =?UTF-8?q?=E5=85=B3=E9=80=BB=E8=BE=91=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/context/ExtensionServiceLoader.java | 6 ++---- .../neutrino/core/web/HttpRequestHandler.java | 6 ++---- .../core/web/WebApplicationServer.java | 4 ++-- .../{param => context}/HttpContextHolder.java | 2 +- .../{param => context}/HttpRequestParser.java | 2 +- .../{ => context}/WebApplicationContext.java | 6 +++--- .../{param => context}/WebContextHolder.java | 3 +-- .../ControllerGlobalInterceptor.java | 21 ++++++++++++++++++- .../core/web/router/DefaultHttpRouter.java | 2 +- .../core/web/test1/TestController.java | 3 +-- .../server/controller/Test1Controller.java | 2 +- 11 files changed, 35 insertions(+), 22 deletions(-) rename neutrino-core/src/main/java/fun/asgc/neutrino/core/web/{param => context}/HttpContextHolder.java (98%) rename neutrino-core/src/main/java/fun/asgc/neutrino/core/web/{param => context}/HttpRequestParser.java (99%) rename neutrino-core/src/main/java/fun/asgc/neutrino/core/web/{ => context}/WebApplicationContext.java (94%) rename neutrino-core/src/main/java/fun/asgc/neutrino/core/web/{param => context}/WebContextHolder.java (98%) diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ExtensionServiceLoader.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ExtensionServiceLoader.java index 4a6d2058..52652223 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ExtensionServiceLoader.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/context/ExtensionServiceLoader.java @@ -25,10 +25,8 @@ import fun.asgc.neutrino.core.annotation.Autowired; import fun.asgc.neutrino.core.annotation.Component; import fun.asgc.neutrino.core.annotation.NonIntercept; import fun.asgc.neutrino.core.bean.SimpleBeanFactory; -import fun.asgc.neutrino.core.web.HttpRequestHandler; -import fun.asgc.neutrino.core.web.WebApplicationContext; -import fun.asgc.neutrino.core.web.WebApplicationServer; -import fun.asgc.neutrino.core.web.param.WebContextHolder; +import fun.asgc.neutrino.core.web.context.WebApplicationContext; +import fun.asgc.neutrino.core.web.context.WebContextHolder; /** * diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/HttpRequestHandler.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/HttpRequestHandler.java index b69d9bab..1de9c6b6 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/HttpRequestHandler.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/HttpRequestHandler.java @@ -30,9 +30,8 @@ import fun.asgc.neutrino.core.context.ApplicationConfig; import fun.asgc.neutrino.core.util.*; import fun.asgc.neutrino.core.web.annotation.RequestBody; import fun.asgc.neutrino.core.web.annotation.RequestParam; -import fun.asgc.neutrino.core.web.param.HttpContextHolder; -import fun.asgc.neutrino.core.web.param.HttpRequestParser; -import fun.asgc.neutrino.core.web.param.WebContextHolder; +import fun.asgc.neutrino.core.web.context.HttpContextHolder; +import fun.asgc.neutrino.core.web.context.HttpRequestParser; import fun.asgc.neutrino.core.web.router.DefaultHttpRouter; import fun.asgc.neutrino.core.web.router.HttpRouteParam; import fun.asgc.neutrino.core.web.router.HttpRouteResult; @@ -42,7 +41,6 @@ import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.http.*; import lombok.extern.slf4j.Slf4j; -import org.checkerframework.checker.units.qual.C; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationServer.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationServer.java index 35b77e29..6b5f5c45 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationServer.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationServer.java @@ -28,8 +28,8 @@ import fun.asgc.neutrino.core.annotation.Init; import fun.asgc.neutrino.core.context.ApplicationConfig; import fun.asgc.neutrino.core.context.ApplicationRunner; import fun.asgc.neutrino.core.util.*; -import fun.asgc.neutrino.core.web.param.HttpContextHolder; -import fun.asgc.neutrino.core.web.param.WebContextHolder; +import fun.asgc.neutrino.core.web.context.HttpContextHolder; +import fun.asgc.neutrino.core.web.context.WebContextHolder; import io.netty.bootstrap.ServerBootstrap; import io.netty.buffer.Unpooled; import io.netty.channel.*; diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpContextHolder.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/HttpContextHolder.java similarity index 98% rename from neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpContextHolder.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/HttpContextHolder.java index 6586ee6f..71e8114f 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpContextHolder.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/HttpContextHolder.java @@ -19,7 +19,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package fun.asgc.neutrino.core.web.param; +package fun.asgc.neutrino.core.web.context; import io.netty.channel.ChannelHandlerContext; import io.netty.handler.codec.http.FullHttpRequest; diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpRequestParser.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/HttpRequestParser.java similarity index 99% rename from neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpRequestParser.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/HttpRequestParser.java index 122935c0..23d53519 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpRequestParser.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/HttpRequestParser.java @@ -19,7 +19,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package fun.asgc.neutrino.core.web.param; +package fun.asgc.neutrino.core.web.context; import fun.asgc.neutrino.core.util.ArrayUtil; import fun.asgc.neutrino.core.util.Assert; diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationContext.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebApplicationContext.java similarity index 94% rename from neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationContext.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebApplicationContext.java index d980c62f..38479c8d 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/WebApplicationContext.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebApplicationContext.java @@ -19,15 +19,16 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package fun.asgc.neutrino.core.web; +package fun.asgc.neutrino.core.web.context; import com.google.common.collect.Sets; import fun.asgc.neutrino.core.annotation.*; import fun.asgc.neutrino.core.bean.SimpleBeanFactory; import fun.asgc.neutrino.core.context.ApplicationContext; import fun.asgc.neutrino.core.context.ApplicationRunner; +import fun.asgc.neutrino.core.web.HttpRequestHandler; +import fun.asgc.neutrino.core.web.WebApplicationServer; import fun.asgc.neutrino.core.web.interceptor.ControllerGlobalInterceptor; -import fun.asgc.neutrino.core.web.param.WebContextHolder; import fun.asgc.neutrino.core.web.router.DefaultHttpRouter; import lombok.Data; import lombok.experimental.Accessors; @@ -57,7 +58,6 @@ public class WebApplicationContext implements ApplicationRunner { public void init() { this.webApplicationBeanFactory = new SimpleBeanFactory(applicationBeanFactory, "webApplicationBeanFactory"); this.webApplicationBeanFactory.init(); - // TODO 初始化路由信息 } @Destroy diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/WebContextHolder.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebContextHolder.java similarity index 98% rename from neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/WebContextHolder.java rename to neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebContextHolder.java index 80bd583b..5b59018a 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/WebContextHolder.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/context/WebContextHolder.java @@ -19,7 +19,7 @@ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ -package fun.asgc.neutrino.core.web.param; +package fun.asgc.neutrino.core.web.context; import fun.asgc.neutrino.core.annotation.Autowired; import fun.asgc.neutrino.core.annotation.Component; @@ -32,7 +32,6 @@ import fun.asgc.neutrino.core.util.*; import fun.asgc.neutrino.core.web.annotation.RestController; import java.util.List; -import java.util.Set; import java.util.stream.Collectors; /** diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/interceptor/ControllerGlobalInterceptor.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/interceptor/ControllerGlobalInterceptor.java index 91ac26d3..4c8c6f6e 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/interceptor/ControllerGlobalInterceptor.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/interceptor/ControllerGlobalInterceptor.java @@ -24,16 +24,27 @@ package fun.asgc.neutrino.core.web.interceptor; import fun.asgc.neutrino.core.annotation.Component; import fun.asgc.neutrino.core.annotation.Init; import fun.asgc.neutrino.core.annotation.NonIntercept; +import fun.asgc.neutrino.core.aop.Aop; import fun.asgc.neutrino.core.aop.Invocation; import fun.asgc.neutrino.core.aop.interceptor.*; +import fun.asgc.neutrino.core.bean.BeanWrapper; +import fun.asgc.neutrino.core.util.ReflectUtil; +import fun.asgc.neutrino.core.web.annotation.GetMapping; +import fun.asgc.neutrino.core.web.annotation.PostMapping; +import fun.asgc.neutrino.core.web.annotation.RequestMapping; +import fun.asgc.neutrino.core.web.context.WebContextHolder; +import lombok.extern.slf4j.Slf4j; +import java.lang.reflect.Method; import java.util.List; +import java.util.Set; /** * Controller全局拦截器 * @author: aoshiguchen * @date: 2022/7/27 */ +@Slf4j @NonIntercept @Component public class ControllerGlobalInterceptor implements Interceptor { @@ -48,7 +59,15 @@ public class ControllerGlobalInterceptor implements Interceptor { @Init public void init() { - // TODO + List beanWrapperList = WebContextHolder.getControllerBeanWrapperList(); + beanWrapperList.forEach(beanWrapper -> { + Set methods = ReflectUtil.getDeclaredMethods(beanWrapper.getType()); + methods.forEach(method -> { + if (method.isAnnotationPresent(GetMapping.class) || method.isAnnotationPresent(PostMapping.class) || method.isAnnotationPresent(RequestMapping.class)) { + Aop.intercept(method, this.getClass()); + } + }); + }); } @Override diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/router/DefaultHttpRouter.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/router/DefaultHttpRouter.java index d9fd7f26..264e2bb1 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/router/DefaultHttpRouter.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/router/DefaultHttpRouter.java @@ -30,7 +30,7 @@ import fun.asgc.neutrino.core.web.HttpMethod; import fun.asgc.neutrino.core.web.annotation.GetMapping; import fun.asgc.neutrino.core.web.annotation.PostMapping; import fun.asgc.neutrino.core.web.annotation.RequestMapping; -import fun.asgc.neutrino.core.web.param.WebContextHolder; +import fun.asgc.neutrino.core.web.context.WebContextHolder; import lombok.extern.slf4j.Slf4j; import java.io.InputStream; diff --git a/neutrino-core/src/test/java/fun/asgc/neutrino/core/web/test1/TestController.java b/neutrino-core/src/test/java/fun/asgc/neutrino/core/web/test1/TestController.java index b7189692..7e388e7c 100644 --- a/neutrino-core/src/test/java/fun/asgc/neutrino/core/web/test1/TestController.java +++ b/neutrino-core/src/test/java/fun/asgc/neutrino/core/web/test1/TestController.java @@ -23,9 +23,8 @@ package fun.asgc.neutrino.core.web.test1; import com.alibaba.fastjson.JSONObject; import fun.asgc.neutrino.core.annotation.Autowired; -import fun.asgc.neutrino.core.annotation.NonIntercept; import fun.asgc.neutrino.core.web.annotation.*; -import fun.asgc.neutrino.core.web.param.HttpContextHolder; +import fun.asgc.neutrino.core.web.context.HttpContextHolder; import io.netty.buffer.Unpooled; import io.netty.channel.ChannelFutureListener; import io.netty.channel.ChannelHandlerContext; diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/Test1Controller.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/Test1Controller.java index 3decf67d..31d94353 100644 --- a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/Test1Controller.java +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/controller/Test1Controller.java @@ -25,7 +25,7 @@ import fun.asgc.neutrino.core.annotation.Autowired; import fun.asgc.neutrino.core.web.annotation.GetMapping; import fun.asgc.neutrino.core.web.annotation.RequestMapping; import fun.asgc.neutrino.core.web.annotation.RestController; -import fun.asgc.neutrino.core.web.param.HttpContextHolder; +import fun.asgc.neutrino.core.web.context.HttpContextHolder; import fun.asgc.neutrino.proxy.server.service.Test1Service; /**