如何使用 spring-boot 创建 REST 服务?

How to create a REST service with spring-boot?

我正在使用 spring-boot 并希望按如下方式集成一个简单的 REST 服务。

    @Controller
    @RequestMapping("/content")
    public class MyServiceRest extends SpringBeanAutowiringSupport {
        @RequestMapping(method = RequestMethod.GET)
        public String test() {
            return "OK";
        }
    }

结果:localhost:8080/<app-name>/services/content 个结果 "No service was found."。为什么?

我是否必须以某种方式显式发布服务?

可能是因为我的调度程序 servlet?

@Bean
public ServletRegistrationBean dispatcherServletRegistration() {
    ServletRegistrationBean registration = new ServletRegistrationBean(new CXFServlet(), "/services/*");
    registration.setName(DispatcherServletAutoConfiguration.DEFAULT_DISPATCHER_SERVLET_REGISTRATION_BEAN_NAME);
    return registration;
}

您还应该为您的方法添加 url 映射

@RequestMapping(方法=RequestMethod.GET,值="url_here", 尝试

@RequestMapping(method = RequestMethod.POST, value = "/",

添加带有控制器 class 的包到 @Component 在主 class 中扫描,例如:@ComponentScan( basePackages = { "your.package.with.controller" } ),当 spring 没有初始化时会发生这种情况(doesn不知道)控制器

由于您使用的是 Spring 启动,请确保通过添加正确的注释来正确设置您的应用程序。例如,

@EnableAutoConfiguration
@EnableWebMvc
@Configuration
@ComponentScan
/*
 * Application Setups using Spring boot.
 */
public class Application{

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

@EnableWebMvc 是为使用 Spring MVC 和 Spring 引导而添加的注释。 然后你可以像你在问题中所做的那样定义你的控制器。

在我目前使用的最新版本 Spring Boot 中,Web 服务地址为 http://localhost:8080/content

此外,我用来启动服务的 class 如下所示:

@ComponentScan("eu.buzea")
@EnableAutoConfiguration
@EnableTransactionManagement
@SpringBootApplication
public class Application{

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

源代码

https://drive.google.com/open?id=0BzBKpZ4nzNzUWmJmOTFwbTFjWWM

使用 Swagger

http://localhost:7070/swagger-ui.html#/

**干杯*

从当前 spring-boot.1.5.6 开始,没有使用 cxf 的要求。

只需将 @RestController@GetMapping 一起使用,即可愉快地访问 localhost:8080/content