欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

spring cloud服务提供与调用示例

程序员文章站 2022-06-04 11:15:30
本文创建方式采用intellij IDEA 创建项目 1.创建基于Eureka的注册中心。 在打开项目中右键,选择new 选择moudle 然后下一步 输入要创建的项目的信息 选择web下面的web,选择cloud discovery下面的 Eureka server 下一步,创建项目 然后同步po ......

本文创建方式采用intellij idea  创建项目

1.创建基于eureka的注册中心。

  在打开项目中右键,选择new 选择moudle

spring cloud服务提供与调用示例

然后下一步

spring cloud服务提供与调用示例

输入要创建的项目的信息

spring cloud服务提供与调用示例

 

 选择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 注册中心就创建成功,

spring cloud服务提供与调用示例

 

下面我们去创建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

spring cloud服务提供与调用示例

那么我们在启动类,如下

@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);
    }
}

这样我们就实现了服务的注册与调用。

 

那么我们去启动服务进行测试,服务注册成功,我们去启动服务调用端

spring cloud服务提供与调用示例

服务调用端成功,

spring cloud服务提供与调用示例

那么我们去测试下,我们先去测试看单独访问服务是否正常

输入http://localhost:8001/hello?name=liwanlei  

显示

spring cloud服务提供与调用示例

那么我们看下另外一个调用这个服务的服务

http://localhost:8002/hello/name

那么我们看下返回

spring cloud服务提供与调用示例

这样我们调试成功。

户端已经成功的通过feign调用了远程服务,并且将结果返回到了浏览器。