Spring Cloud 上手3-服务提供者
文章目录
这是Spring Cloud上手系列的第三篇,代码放在GitHub上,随着本系列文章更新。
微服务下的代码共享
对于微服务间是否需要进行代码共享,大家都有不同的看法。
虽然,实际的生产应用中,我个人是倾向于不共享代码的。这样可以避免代码上的强依赖,加快服务构建的速度。但是,在下一篇讲服务消费的时候将使用几种不同的方式来调用服务。在本系列文章的其它地方,为减少代码量,我们主要使用了api模块在服务提供方和消费方间进行代码共享。
Philipp Hauer的两篇文章可供参考
RESTful API Design. Best Practices in a Nutshell
Don’t Share Libraries among Microservices
创建服务提供者
我们在provider中创建一个服务,启动provider-service应用后,将在Eureka注册中心中看到它。
在第一篇文章提到过,provider只起目录分类作用,不是实际工程,实际工程是它下面的两个子模块api和service其中api提供客户端调用的接口,供后面使用Feign使用,service是一个Spring Boot应用,提供实际的服务。
配置模块依赖
前面提到过api模块如果没有依赖需要声明,就不需要添加build.gradle了。service则需要添加build.gradle,添加配置,设置Main-Class信息:
|
|
这里的compile project(':provider:api')标明service模块依赖于api模块。
创建服务
在api模块中添加远程服务接口:
|
|
这个接口可供服务提供方和消费方共享。
在service模块中编写Spring Boot程序入口和服务实现:
|
|
这里的@EnableEurekaClient注解用于向服务注册中心注册服务。另一个类似的注解是@EnableDiscoveryClient两者的区别在于前者来自于spring-cloud-netflix只能用于eureka,后者来自于spring-cloud-commons,可用于其它类型的注册中心,如果使用了eureka则两者的作用是一样的。
在application.yml中配置服务注册中心地址:
|
|
构建并启动服务
在根模块中使用gradle :provider:service:build构建服务注册中心应用。
完成后使用java -jar provider/service/build/libs/sc-provider-service-0.0.1.jar启动服务注册中心。
就能在http://localhost:9001查看到SC_PROVIDER服务的注册信息了。

访问http://localhost:9010/provider/hello?name=Jamsa能直接访问到该服务。
文章作者 Jamsa
上次更新 2018-05-30