【问题标题】:SpringBoot Controller Not Being MappedSpringBoot 控制器未映射
【发布时间】:2020-03-19 08:27:22
【问题描述】:

我正在尝试使用一个名为 /movies 的端点创建一个基本的 SpringBoot Web 应用程序。我关注了网站上的一些文档以及关于它的基本 Youtube 教程。

当我从命令行运行 curl localhost:8080 时,应用程序返回 'it works' 但是当我尝试访问我的端点 /movies 时,我看到“The在此服务器上找不到请求的 URL /movies。'

主类:

@SpringBootApplication
public class Main 
{
    public static void main( String[] args )
    {
       SpringApplication.run(Main.class, args);
    }
}

控制器类:

@RestController
@RequestMapping("/movies")
public class MovieController {

    @Autowired
    private MovieService movie_service;

    @RequestMapping(method = RequestMethod.GET)
    public Collection<Movie> getAllMovies(){
        return movie_service.getAllMovies();
    }
}

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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com</groupId>
  <artifactId>MovieDCU</artifactId>
  <version>0.0.1-SNAPSHOT</version>
  <packaging>jar</packaging>

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

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

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


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

对于发布的类似问题,我已经尝试了该网站上几乎所有建议的答案,但似乎没有任何解决方法。一件不寻常的事情是,我在命令行中运行应用程序时看不到映射:


  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.2.1.RELEASE)

2019-11-23 13:27:19.243  INFO 30238 --- [           main] com.Main                                 : Starting Main on Conors-MB with PID 30238 (/Users/eclipse-workspace/Movie/target/classes started by x in /Users/eclipse-workspace/Movie)
2019-11-23 13:27:19.249  INFO 30238 --- [           main] com.Main                                 : No active profile set, falling back to default profiles: default
2019-11-23 13:27:20.011  INFO 30238 --- [           main] com.Main                                 : Started Main in 1.209 seconds (JVM running for 1.611)

感谢任何帮助。

【问题讨论】:

  • 这两个类的包是什么?它如何返回“它有效”?这样做的代码在哪里?
  • 您的控制器对我来说看起来不错。这是您启动应用程序时看到的唯一日志输出吗?默认情况下应该有更多。
  • 您的应用程序尚未启动 Tomcat,因此必须有另一个进程正在侦听端口 8080 并提供“它可以工作”。我猜想 Tomcat 的一个 jar 在下载时被 Maven 损坏了。尝试清除 Maven 的缓存并重建您的应用程序。
  • @AndyWilkinson 谢谢。我没有在应用程序方面运行任何东西,但仍有一些东西在使用该端口。我在 8090 上运行它,它现在可以工作了。

标签: java spring spring-boot model-view-controller controller


【解决方案1】:

试着像这样改变你的班级。 只需在方法级别使用 GetMapping 即可。另请注意,我已将您的服务重命名为标准 Java 命名约定 (camelCase)。

@RestController
public class MovieController {

    @Autowired
    private MovieService movieService;

    @GetMapping("/movies")
    public Collection<Movie> getAllMovies(){
        return movieService.getAllMovies();
    }
}

【讨论】:

    【解决方案2】:

    如果你在 Linux 机器上,那么你可以启动默认的 apache 服务器。

    【讨论】:

      猜你喜欢
      • 2019-09-24
      • 2020-10-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-16
      • 1970-01-01
      • 1970-01-01
      • 2015-12-03
      相关资源
      最近更新 更多