【问题标题】:Spring boot rest api returns 404Spring Boot REST API 返回 404
【发布时间】:2018-09-27 11:43:25
【问题描述】:

我的主课是这样的:

package com.ratings.main;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class App {
    public static void main( String[] args ) {
        SpringApplication.run(App.class, args);
        System.out.println( "Hello World!" );
    }
}

package com.ratings.controller;
@RestController
public class PollController {

    @Autowired
    Poll poll;

    @GetMapping("/")
    public String home() {
        System.out.println("home " + "HOME");
        return "Home";
    }
}

和 pom.xml 文件:

<project xmlns="http://maven.apache.org/POM/4.0.0" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.ratings.main.App</groupId>
  <artifactId>Ratings</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>Ratings</name>
  <url>http://maven.apache.org</url>

  <parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.0.5.RELEASE</version>
  </parent>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    <java.version>1.8</java.version>
  </properties>

  <dependencies>
    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-test</artifactId>
      <scope>test</scope>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-devtools</artifactId>
      <optional>true</optional>
    </dependency>

    <dependency>
      <groupId>org.springframework.boot</groupId>
      <artifactId>spring-boot-starter-data-jpa</artifactId>
    </dependency>

    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <executions>
          <execution>
            <goals>
              <goal>repackage</goal>
            </goals>
          </execution>
        </executions>
        <configuration>
          <mainClass>com.ratings.main.App</mainClass>
          <excludeDevtools>false</excludeDevtools>
        </configuration>
      </plugin>
    </plugins>
  </build>

</project>

当我尝试http://localhost:9090/ 时,我得到 404。为什么它不返回字符串“Home”?

【问题讨论】:

  • 可以添加web mvc config类代码吗?
  • @drowny 我没听明白?什么mvc配置?它是一个 Spring Boot 应用程序
  • 这两个类在同一个包里吗?
  • @kingGarfield 是的
  • 我还在为其他可配置参数添加 webmvc 配置。那么当应用程序启动时,内部tomcat服务器的相关端口是9090吗?或者你能完全添加你的 404 错误吗?

标签: java spring spring-boot spring-restcontroller


【解决方案1】:

你的 SpringBootApplication 类在包中:

package com.ratings.main;

你的控制器在

package com.ratings.controller;

控制器必须与SpringBootApplication相同或低于。

所以要么将你的 SpringBootApplication 移动到

com.ratings 

或将控制器移至

com.ratings.main.controller

【讨论】:

    【解决方案2】:

    把你的控制器类放在这个包com.ratings.main中。 @SpringApplication 包含 @ComponentScan。此注解会扫描您的主包及其子组中的 bean 和配置。

    【讨论】:

      【解决方案3】:

      @SpringBootApplication 包:com.ratings.main;

      @Controller 包:com.ratings.controller;

      controller class 必须在与@SpringBootApplication 注释的主类相同或之下。您可以通过添加这样的示例包来解决此问题; com.ratings.main.*; 相同顺序或以下。

      另一方面,您可以将 @ComponentScan 用于您的控制器包。

      @ComponentScan(value = {"your.controller.package"})
      

      @SpringBootApplication 已经有这个标签,但它只扫描相同的订单及以下。

      【讨论】:

        猜你喜欢
        • 2020-10-07
        • 2018-10-23
        • 2017-06-27
        • 1970-01-01
        • 2021-09-11
        • 1970-01-01
        • 2022-10-25
        • 2018-04-07
        • 2018-12-10
        相关资源
        最近更新 更多