【问题标题】:Why SpringBoot example doesn't work like this?为什么 Spring Boot 示例不能这样工作?
【发布时间】:2015-01-18 13:24:01
【问题描述】:

所以有一个来自 Spring 网站的示例:

package com.example;

import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;

@RestController
@EnableAutoConfiguration
public class Example {

    @RequestMapping("/")
    String home() {
        return "Hello World!";
    }

    public static void main(String[] args) throws Exception {
        SpringApplication.run(Example.class, args);
    }
}

效果很好。有注释@RestController@Controller+@ResponseBody@SpringBootApplication注解等价于使用@Configuration@EnableAutoConfiguration@ComponentScan

我的问题是:为什么会出现 404 错误如果我使用下面的注释访问“/”?

@ResponseBody
@SpringBootApplication
public class Example { ... }

【问题讨论】:

  • 不,@SpringBootApplication 注释不等同于此。它旨在用于测试以表明测试用例也需要引导 Spring Boot..
  • @SpringBootApplication 注释是 1.2 中的新注释,它等效于 @Configuration@EnableAutoConfiguration@ComponentScan。要指示测试应该引导引导,请使用 @IntegrationTest
  • @M.Deinum:该文本是从这里复制的:docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/…
  • 你说得对,我把@SpringApplicationConfiguration 和这个混淆了。 @SpringBootApplication 是一个新添加的内容,它确实应该像您所说的那样工作。尽管(如答案所述)您缺少@RestController@Controller 注释。

标签: spring annotations http-status-code-404 spring-boot


【解决方案1】:

单独使用@ResponseBody 注释不足以告诉Spring 你的类是一个MVC 控制器。你要么需要使用@RestController

@RestController
@SpringBootApplication
public class Example { ... }

@Controller@ResponseBody

@Controller
@ResponseBody
@SpringBootApplication
public class Example { ... }

【讨论】:

    【解决方案2】:

    pom

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <artifactId>quick-log</artifactId>
        <groupId>com.quick</groupId>
        <version>1.0-SNAPSHOT</version>
        <modelVersion>4.0.0</modelVersion>
    
        <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.0.2.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
    
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
                <exclusions>
                    <exclusion>
                        <groupId>org.springframework.boot</groupId>
                        <artifactId>spring-boot-starter-logging</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-log4j2</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-aop</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-test</artifactId>
                <scope>test</scope>
            </dependency>
        </dependencies>
        <build>
            <plugins>
                <plugin>
                    <groupId>org.springframework.boot</groupId>
                    <artifactId>spring-boot-maven-plugin</artifactId>
                </plugin>
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    主要功能

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

    控制器

    @RestController
    @RequestMapping("/")
    public class ApiController {
    
    
        @RequestMapping("/hello")
        public String hello(){
            return "Hello World!";
        }
    }
    

    工作轻松~

    你可以像这样在 github 中找到一些快速简单的示例

    https://github.com/vector4wang/spring-boot-quick

    【讨论】:

      猜你喜欢
      • 2020-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-28
      相关资源
      最近更新 更多