Web开发方式和JAVA应用方式的开发步骤基本类似。
本项目代码示例
主要有如下区别:
JAVA应用方式基于spring-boot-starter,而Web开发方式基于spring-boot-starter-web。
JAVA应用方式依赖spring-boot-starter-provider,而Web开发方式依赖spring-boot-starter-transport。spring-boot-starter-web已经携带了hibernate-validator,不需要额外依赖。
在启动函数中,Web开发方式可以通过声明
@SpringBootApplication(exclude=DispatcherServletAutoConfiguration.class)
来关闭org.springframework.web.servlet.DispatcherServlet,通过@EnableServiceComb会启用org.apache.servicecomb.transport.rest.servlet.RestServlet。虽然排除DispatcherServlet不是必须的,但是大多数场景一个微服务里面存在多个REST框架都不是很好的主意,会造成很多使用上的误解。
- 在microservice.yaml文件中通过配置项servicecomb.rest.servlet.urlPattern来指定RestServlet的URL根路径。并且配置项servicecomb.rest.address里面的监听端口,必须和tomcat监听的端口保持一致(默认是8080,可以通过application.yml中增加server.port修改)
集成java chassis后,可以通过它的方式开发REST接口:
@RestSchema(schemaId = "hello")
@RequestMapping(path = "/")
public class HelloService {
@RequestMapping(path = "hello", method = RequestMethod.GET)
public String sayHello(@RequestParam(name="name") String name) {
return "Hello " + name;
}
}
然后可以通过:http://localhost:9093/hello?name=world来访问。
可以看到使用的标签和Spring MVC大部分是一样的。但也有少量不一样的地方,比如:
通过RestSchema替换RestController
需要显示声明@RequestMapping
如果业务代码不是新开发,而是基于Spring MVC做的开发,现在java chassis基于做改造,还需要注意在禁用DispatcherServlet后,和其有关的功能特性将不再生效。
在下面的章节,还会详细介绍在Spring MVC模式下两者的区别。