Web开发方式和JAVA应用方式的开发步骤基本类似。

    主要有如下区别:

    • JAVA应用方式基于spring-boot-starter,而Web开发方式基于spring-boot-starter-web。

    • Web开发方式通过@EnableServiceComb会启用org.apache.servicecomb.transport.rest.servlet.RestServlet, 可以通过声明

    1. @SpringBootApplication(exclude=DispatcherServletAutoConfiguration.class)

    来关闭org.springframework.web.servlet.DispatcherServlet。虽然排除DispatcherServlet不是必须的,但是大多数场景一个微服务里面存在多个REST框架都不是很好的主意,容易误用。

    注意: 有些spring boot版本在加上这个配置以后,启动会失败。也可以不关闭DispatcherServlet,而是将他们指定为不同的URL前缀,让这两个Servlet共存。这种方式在一些历史遗留系统改造,必须使用DispatcherServlet发布REST接口的场景非常有用。

    1. ## DispatcherServlet path
    2. server.servlet.path: /ui
    3. ## RestServlet path
    4. servicecomb.rest.servlet.urlPattern: /api/*
    • 通过配置项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大部分是一样的。但也有少量不一样的地方,比如:

    1. 通过RestSchema替换RestController

    2. 需要显示声明@RequestMapping

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

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