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

时间:2015-01-19 10:48:54

标签: java spring rest 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;
}

6 个答案:

答案 0 :(得分:1)

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

@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启动时添加的注释。 然后,您可以像在问题中一样定义控制器。

答案 1 :(得分:1)

答案 2 :(得分:0)

您还应该为方法添加网址映射

@RequestMapping(method = RequestMethod.GET,value =“url_here”, 尝试

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

在我目前正在使用的最新版Spring Boot中,Web服务的地址为Error at new ValidationError (/project/node_modules/tv4/tv4.js:1461:12) at ValidatorContext.createError (/project/node_modules/tv4/tv4.js:359:14) at ValidatorContext.validateType (/project/node_modules/tv4/tv4.js:751:14) at ValidatorContext.validateBasic (/project/node_modules/tv4/tv4.js:721:19) at ValidatorContext.validateAll (/project/node_modules/tv4/tv4.js:599:19) at ValidatorContext.validateArrayItems (/project/node_modules/tv4/tv4.js:947:21) at ValidatorContext.validateArray (/project/node_modules/tv4/tv4.js:880:11) at ValidatorContext.validateAll (/project/node_modules/tv4/tv4.js:602:11) at Object.api.validate (/project/node_modules/tv4/tv4.js:1573:24) at Object.<anonymous> (tv4-test.js:20:17)

此外,我用于启动服务的类如下所示:

http://localhost:8080/content

答案 5 :(得分:0)

截至当前spring-boot.1.5.6,无需使用cxf

只需将@RestController@GetMapping一起使用即可,并乐意访问localhost:8080/content