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开发方式可以通过声明

    1. @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接口:
    1. @RestSchema(schemaId = "hello")
    2. @RequestMapping(path = "/")
    3. public class HelloService {
    4. @RequestMapping(path = "hello", method = RequestMethod.GET)
    5. public String sayHello(@RequestParam(name="name") String name) {
    6. return "Hello " + name;
    7. }
    8. }

    然后可以通过:http://localhost:9093/hello?name=world来访问。

    可以看到使用的标签和Spring MVC大部分是一样的。但也有少量不一样的地方,比如:

    如果业务代码不是新开发,而是基于Spring MVC做的开发,现在java chassis基于做改造,还需要注意在禁用DispatcherServlet后,和其有关的功能特性将不再生效。

    在下面的章节,还会详细介绍在Spring MVC模式下两者的区别。