Spring引导Rest:通过邮递员发布JSON时未找到错误404

Spring引导Rest:通过邮递员发布JSON时未找到错误404,rest,spring-boot,Rest,Spring Boot,我正试图通过邮递员调用邮政服务。我的应用程序正在嵌入式tomcat服务器上运行。但是,当我尝试调用该服务时,得到的错误是“在名为“DispatcherServlet”的DispatcherServlet中找不到URI为[/findrouting]的HTTP请求的映射” 它甚至无法识别http:localhost:8080/ RoutingRequest和RoutingResponse是具有getter和setter的POJO。 我是不是遗漏了什么。我确实查了很多例子,但没有找到任何解决问题的方法

我正试图通过邮递员调用邮政服务。我的应用程序正在嵌入式tomcat服务器上运行。但是,当我尝试调用该服务时,得到的错误是“在名为“DispatcherServlet”的DispatcherServlet中找不到URI为[/findrouting]的HTTP请求的映射” 它甚至无法识别http:localhost:8080/

RoutingRequest和RoutingResponse是具有getter和setter的POJO。 我是不是遗漏了什么。我确实查了很多例子,但没有找到任何解决问题的方法

@SpringBootApplication
@EnableWebMvc
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

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

}
请参阅下面我的代码:

package com.ab.hello.ambassador.server;

import java.util.Arrays;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.web.SpringBootServletInitializer;
import org.springframework.context.ApplicationContext;

@SpringBootApplication
public class Application extends SpringBootServletInitializer {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(AmbassadorApplication.class, args);

        System.out.println("List of Beans instantiated");
        String[] beanNames = ctx.getBeanDefinitionNames();
        Arrays.sort(beanNames);
        for (String beanName : beanNames) {
            System.out.println(beanName);
        }
    }
}


package com.ab.hello.ambassador.server.controller;

import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
import static org.springframework.web.bind.annotation.RequestMethod.POST;

import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

import com.dp.connect.ambassador.server.RoutingRequest;
import com.dp.connect.ambassador.server.RoutingResponse;

@RestController
public class ApplicationController {

    @RequestMapping("/")
    public String index() {
        return "Spring Boot POC Welcomes You!";
    }


    @RequestMapping(method = POST, value = "/findrouting", consumes = { APPLICATION_JSON_VALUE }, produces = {
            APPLICATION_JSON_VALUE })
    public RoutingResponse findRoute(@RequestBody RoutingRequest request) throws Exception {
        // some business logic that would return response; as of now I have set it to null
        RoutingResponse response = null;
        return response;
    }

}

尝试在控制器中定义路径:

@RestController
@RequestMapping("/")
public class ApplicationController {

    @RequestMapping
    public String index() {
        return "Spring Boot POC Welcomes You!";
    }


    @RequestMapping(method = POST, value = "/findrouting", consumes = { APPLICATION_JSON_VALUE }, produces = {
            APPLICATION_JSON_VALUE })
    public RoutingResponse findRoute(@RequestBody RoutingRequest request) throws Exception {
        // some business logic that would return response; as of now I have set it to null
        RoutingResponse response = null;
        return response;
    }

}
更改下面的行

ApplicationContext ctx=SpringApplication.run(AmbassadorApplication.class,args)

ApplicationContext ctx=SpringApplication.run(Application.class,args)


根据spring文档,似乎需要覆盖配置方法:

    @SpringBootApplication
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

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

}

谢谢你抽出时间。经过相当长时间的斗争。我算出了这段代码。添加了注释@EnableWebMvc。这解决了我的问题

@SpringBootApplication
@EnableWebMvc
public class Application extends SpringBootServletInitializer {

    @Override
    protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
        return application.sources(Application.class);
    }

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

}

不幸的是,是的!请在应用程序启动和调用服务后发布控制台输出。谢谢!但是我在发帖的时候好像放错了线。我的代码有正确的行