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