java – Embedded Jetty:选择现有的Spring MVC控制器
上下文
我在一个Web应用程序(使用Play Framework)上工作,我正在尝试使用Spring MVC迁移到传统的Servlet模型.我想在已有的Jetty容器(netty)中运行嵌入式Jetty容器. 问题 我正在尝试重新使用创建的Spring上下文(包含所有应用程序bean,包括新添加的Spring MVC控制器),但是请求映射没有被选中. 我调试了Spring的Dispatcher Servlet,并且确实没有注册映射(所以它不能处理任何路径). 试图解决方案 这是手动Jetty设置代码: @RequiredArgsConstructor public class EmbeddedJetty { private final int port; private final AnnotationConfigWebApplicationContext existingContext; @SneakyThrows public void start() { Assert.notNull(existingContext.getBean(UserController.class)); val server = new Server(port); ServletContextHandler handler = new ServletContextHandler(); ServletHolder servlet = new ServletHolder(new DispatcherServlet(existingContext)); handler.addServlet(servlet,"/"); handler.addEventListener(new ContextLoaderListener(existingContext)); server.setHandler(handler); server.start(); log.info("Server started at port {}",port); } } 而这里的控制器被忽略了: @Controller public class UserController { @GetMapping("/users/{userId}") public ResponseEntity<?> getUser(@PathVariable("userId") long userId) { return ResponseEntity.ok("I work"); } } 题 我需要做些什么才能使我的嵌入式jetty设置获取现有的控制器bean并提供映射? 解决方法
静态结构
如果要迁移到servlet模型,您可能希望熟悉正常结构: . ├── pom.xml ├── README ├── src │ ├── main │ │ ├── java │ │ ├── resources │ │ │ ├── spring │ │ └── webapp │ │ └── WEB-INF │ │ └── web.xml │ └── test │ ├── java │ └── resources web.xml是j2ee服务器用于部署应用程序的核心描述符.在web.xml中定义的应用程序中存在一些重要组件: >过滤器 Sever Start 当服务器启动时,它将设置监听器以监控整个应用程序或请求的生命周期;它会设置过滤器来过滤请求;它将设置servlet来处理请求. 春天的方式 Spring是一种将许多方便的方法/实用程序集成到我们的应用程序中的轻量级方法.它重量轻,因为它只通过两件事附加到我们的项目中: >在web.xml中定义spring的侦听器以进行初始化 建议 所以,回到我们的问题. >您的jetty服务器以ServletContextHandler开头,它与映射有关,但与侦听器无关(即没有spring config将是init).你应该从WebAppContext开始; 参考 > filter and listener (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- java – RMI NotSerializableException虽然它是一个远程对象
- Java泛型泛型类型参数和Optionals的奇怪编译错误
- webdriervAPI(WebElement接口常用方法)
- 12-01 Java Scanner类,Scanner类中的nextLine()产生的换行
- java – Spring MVC将一个值列表从JSP页面传递给控制器
- java – Android模拟相机
- java – 在ant构建期间进行代码修改的最佳实践
- java操作csv文件相关代码
- jsf – 无法将PrimeFaces添加为EAR的库
- 如何从DocumentListener(DocumentEvent)获取源对象?