web拦截器相关逻辑调整

This commit is contained in:
aoshiguchen
2022-07-27 19:23:59 +08:00
parent 6f3fff0666
commit eb3617181e
11 changed files with 35 additions and 22 deletions
@@ -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;
/**
*
@@ -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;
@@ -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.*;
@@ -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;
@@ -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;
@@ -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
@@ -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;
/**
@@ -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<BeanWrapper> beanWrapperList = WebContextHolder.getControllerBeanWrapperList();
beanWrapperList.forEach(beanWrapper -> {
Set<Method> 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
@@ -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;
@@ -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;
@@ -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;
/**