如何使用 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
。
我正在使用 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
。