spring cloud服务提供与调用示例
程序员文章站
2023-02-24 15:17:33
本文创建方式采用intellij IDEA 创建项目 1.创建基于Eureka的注册中心。 在打开项目中右键,选择new 选择moudle 然后下一步 输入要创建的项目的信息 选择web下面的web,选择cloud discovery下面的 Eureka server 下一步,创建项目 然后同步po ......
本文创建方式采用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调用了远程服务,并且将结果返回到了浏览器。
推荐阅读
-
二、Spring Cloud 之旅 -- Eureka 微服务的发布与调用
-
Spring Cloud入门笔记(二) 服务注册与消费
-
Spring cloud踩坑记录之使用feignclient远程调用服务404的方法
-
详解Spring-Cloud2.0之Feign调用远程服务指南
-
Spring cloud踩坑记录之使用feignclient远程调用服务404的方法
-
使用Spring Cloud Feign远程调用的方法示例
-
spring cloud feign实现远程调用服务传输文件的方法
-
spring cloud consul使用ip注册服务的方法示例
-
最简单的Spring Cloud教程第一篇:服务的注册与发现(Eureka)
-
Spring-cloud-eureka使用feign调用服务接口