spring cloud服务提供与调用示例
本文创建方式采用intellij idea 创建项目
1.创建基于eureka的注册中心。
在打开项目中右键,选择new 选择moudle
然后下一步
输入要创建的项目的信息
选择web下面的web,选择cloud discovery下面的 eureka server 下一步,创建项目
然后同步pom.xml文件内容、
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/pom/4.0.0" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation="http://maven.apache.org/pom/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelversion>4.0.0</modelversion> <parent> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-parent</artifactid> <version>2.1.3.release</version> <relativepath/> <!-- lookup parent from repository --> </parent> <groupid>com.example</groupid> <artifactid>server</artifactid> <version>0.0.1-snapshot</version> <name>server</name> <description>demo project for spring boot</description> <properties> <java.version>1.8</java.version> <spring-cloud.version>greenwich.sr1</spring-cloud.version> </properties> <dependencies> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-web</artifactid> </dependency> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-starter-netflix-eureka-server</artifactid> </dependency> <dependency> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-starter-test</artifactid> <scope>test</scope> </dependency> </dependencies> <dependencymanagement> <dependencies> <dependency> <groupid>org.springframework.cloud</groupid> <artifactid>spring-cloud-dependencies</artifactid> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencymanagement> <build> <plugins> <plugin> <groupid>org.springframework.boot</groupid> <artifactid>spring-boot-maven-plugin</artifactid> </plugin> </plugins> </build> <repositories> <repository> <id>spring-milestones</id> <name>spring milestones</name> <url>https://repo.spring.io/milestone</url> </repository> </repositories> </project>
在启动文件中选择
@springbootapplication @enableeurekaserver public class serverapplication { public static void main(string[] args) { springapplication.run(serverapplication.class, args); } }
配置文件
server:
port: 8000
eureka:
instance:
hostname: localhost
client:
fetch-registry: false
register-with-eureka: false
serviceurl:
defaultzone: http://localhost:8000/eureka/
spring:
application:
name: spring-cloud-eureka
创建完,我们去运行下,运行正常后,我们去访问localhost:8000, 到下面的界面,这样我们eureka 注册中心就创建成功,
下面我们去创建server端,和client;
server端呢创建中与eureka选择不同的在于cloud discovery中,这里需要选择cloud discovery
然后创建完,去同步对应的pom.xml文件
在启动类编写如下
@springbootapplication @enablediscoveryclient public class serveroneapplication { public static void main(string[] args) { springapplication.run(serveroneapplication.class, args); } }
配置文件
server: port: 8001 eureka: instance: hostname: localhost client: serviceurl: defaultzone: http://localhost:8000/eureka/ spring: application: name: spring-serverserver
我们需要编写一个提供服务的接口
@restcontroller public class hellocontroller { @requestmapping("/hello") public string indesx(@requestparam string name) { return "hello "+name+",this is first messge"; } }
这样我们就可以实现我们的server端
然后我们去创建client端
client端多需要在server上创建多一个feign
那么我们在启动类,如下
@springbootapplication @enablediscoveryclient @enablefeignclients public class demoapplication { public static void main(string[] args) { springapplication.run(demoapplication.class, args); } }
配置文件
server: port: 8002 eureka: instance: hostname: localhost client: serviceurl: defaultzone: http://localhost:8000/eureka/ spring: application: name: spring-client
那么我们去写调用server的服务
@feignclient(name= "spring-serverserver") public interface helloremote { @requestmapping(value = "/hello") public string hello(@requestparam(value = "name") string name); }
实现接口
@restcontroller public class consumercontroller { @autowired helloremote lloremote; @requestmapping("/hello/{name}") public string index(@pathvariable("name") string name) { return lloremote.hello(name); } }
这样我们就实现了服务的注册与调用。
那么我们去启动服务进行测试,服务注册成功,我们去启动服务调用端
服务调用端成功,
那么我们去测试下,我们先去测试看单独访问服务是否正常
输入http://localhost:8001/hello?name=liwanlei
显示
那么我们看下另外一个调用这个服务的服务
http://localhost:8002/hello/name
那么我们看下返回
这样我们调试成功。
户端已经成功的通过feign调用了远程服务,并且将结果返回到了浏览器。
上一篇: for循环
下一篇: C++_构造函数与析构函数
推荐阅读
-
Spring Cloud第七篇 | 声明式服务调用Feign
-
[Spring cloud 一步步实现广告系统] 11. 使用Feign实现微服务调用
-
跟我学SpringCloud | 第三篇:服务的提供与Feign调用
-
spring cloud服务提供与调用示例
-
spring cloud 入门系列五:使用Feign 实现声明式服务调用
-
第1章 Spring Cloud 构建微服务架构(一)服务注册与发现
-
Spring Cloud实战之初级入门(四)— 利用Hystrix实现服务熔断与服务监控
-
Spring Cloud 入门 Consul-Client服务提供
-
从实践出发:微服务布道师告诉你Spring Cloud与Spring Boot他如何选择
-
Nacos--在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery(服务注册+配置管理示例)