gpt4 book ai didi

java - 没有 Spring Boot 的带有 Gradle 的 Spring Rest Hello World 应用程序

转载 作者:行者123 更新时间:2023-11-28 23:58:42 25 4
gpt4 key购买 nike

如何在不使用 Spring Boot 的情况下使我的 Spring Rest HelloWorld 应用正常运行?

在 eclipse 中的 tomcat 8.5 中运行此项目时,我希望 url“localhost:8080/hello”显示“HelloWorld”,但它却显示 404

src/main/java/com.package/HelloController.java

@RestController
public class HelloController {

@RequestMapping("/hello")
public String helloWorld() {
return "Hello World";
}

}

src/main/java/com.package/HelloConfig.java

public class HelloConfig {

@Bean
public HelloController helloController() {
return new HelloController();
}

public static void main(String[] args) {
ConfigurableApplicationContext context = new AnnotationConfigApplicationContext(HelloConfig.class);
context.getBean(HelloController.class);
}
}

构建.gradle

plugins {
id 'java'
id 'war'
id 'eclipse-wtp'
}

dependencies {
compile 'org.springframework:spring-context:5.0.3.RELEASE'
compile 'org.springframework:spring-web:5.0.3.RELEASE'
testCompile 'junit:junit:4.12'
}

repositories {
mavenCentral()
}

最佳答案

回答我自己的问题:缺少的部分是 DispatcherServlet,负责将 http 请求委托(delegate)给 Controller 的逻辑,例如我示例中的 HelloController。

基于 Spring 文档(https://docs.spring.io/spring/docs/current/spring-framework-reference/web.html#mvc-servlet),有 3 种配置 DispatcherServlet 的方法:

  1. 在 web.xml 中
  2. 覆盖 WebApplicationInitializer
  3. 扩展 AbstractAnnotationConfigDispatcherServletInitializer(推荐用于像我这样具有基于 Java 配置的应用)

src/main/java/com.package/ServletInitializer:

public class ServletInitializer extends AbstractAnnotationConfigDispatcherServletInitializer {

@Override
protected Class<?>[] getRootConfigClasses() {
return null;
}

@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[] { HelloConfig.class };
}

@Override
protected String[] getServletMappings() {
return new String[] { "/" };
}
}

注意:为什么反对票?

关于java - 没有 Spring Boot 的带有 Gradle 的 Spring Rest Hello World 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49154810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com