我正在使用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;
}
由于您使用的是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 Boot中使用Spring MVC而添加的注释。 然后,您可以像在问题中一样定义控制器。
您还应该为您的方法添加网址映射
@RequestMapping(方法= RequestMethod.GET,值=“ url_here”,尝试
@RequestMapping(method = RequestMethod.POST, value = "/",
将具有控制器类的包添加到主类中的@Component
扫描中,例如: @ComponentScan( basePackages = { "your.package.with.controller" } )
,这是在spring未初始化(不知道)控制器时发生的
在我当前使用的最新版本的Spring Boot中,Web服务的地址为http://localhost:8080/content
另外,我用来启动服务的类如下所示:
@ComponentScan("eu.buzea")
@EnableAutoConfiguration
@EnableTransactionManagement
@SpringBootApplication
public class Application{
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
从当前的spring-boot.1.5.6
,不需要使用cxf
。
只需将@RestController
与@GetMapping
@RestController
使用,并乐于访问localhost:8080/content
。