spring-clound基础开发

一、使用openfeig调用远程另外一个服务接口

  • 1、创建一个spring boot工程,并且创建2个模块来当微服务模块

  • 2、分别配置2个模块的启动文件

  • 3、分别两个模块下创建一个测试的控制器

  • 4、在项目的根目录的pom.xml中添加spring-cloud配置

    <properties>
        <java.version>1.8java.version>
        <spring-cloud.version>2021.0.8spring-cloud.version>
    properties>
    
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloudgroupId>
                <artifactId>spring-cloud-dependenciesartifactId>
                <version>${spring-cloud.version}version>
                <type>pomtype>
                <scope>importscope>
            dependency>
        dependencies>
    dependencyManagement>
    
  • 5、在需要调用别的服务的项目中添加依赖

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-openfeignartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-loadbalancerartifactId>
    dependency>
    
  • 6、在需要调用别的 服务的项目中创建一个文件夹feign,里面创建一个文件SystemFeignHello.java的接口

    package com.example.feign;
    
    import org.springframework.cloud.openfeign.FeignClient;
    import org.springframework.web.bind.annotation.GetMapping;
    
    @FeignClient(name = "system", url = "http://localhost:9001/system")
    public interface SystemFeignHello {
        /**
         * 别的地方调用hell1方法的时候就会调用http://localhost:9001/system/hello路由
         * @return
         */
        @GetMapping("hello")
        String hello1();
    }
    
  • 7、测试调用另外一个服务的接口

    package com.example.controller;
    
    import com.example.feign.SystemFeignHello;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import javax.annotation.Resource;
    
    @RestController
    public class HelloController {
    
        @Resource
        SystemFeignHello systemFeignHello;
    
        @GetMapping("hello")
        public String hello() {
            return "File Hello";
        }
    
    
        @GetMapping("systemHello")
        public String getHello() {
            String helloResult = this.systemFeignHello.hello1();
            System.out.println(helloResult+"返回数据");
            return helloResult;
        }
    }
    
  • 8、在调用服务的启动类上加上扫描注解

    package com.example;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.openfeign.EnableFeignClients;
    
    @SpringBootApplication
    @EnableFeignClients("com.example.feign")
    public class FileApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(FileApplication.class, args);
        }
    
    }
    
  • 9、网页上测试调用接口

  • 10、system项目中接口如下,和普通接口没任何区别

    package com.example.controller;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    @RestController
    public class HelloController {
    
        @GetMapping("hello")
        public String hello() {
            return "System Hello11";
        }
    }
    

二、使用eureka来服务端配置

  • 1、eureka分为服务端和客户端,需要在项目中先创建一个eureka的服务段,在子项目中使用客户端的方式连接

  • 2、创建一个eureka模块来做服务端

  • 3、在eureka模块中添加依赖包

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-serverartifactId>
        dependency>
    dependencies>
    
  • 4、配置文件中基本配置

    spring.application.name=eureka
    server.port=8761
    eureka.client.fetch-registry=false
    eureka.client.register-with-eureka=false
    
  • 5、在启动类上添加注解

    package com.example;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(EurekaApplication.class, args);
        }
    
    }
    
  • 6、直接在浏览器上输入http://localhost:8761/如下就表示配置成功

    spring-clound基础开发_第1张图片

三、客户端配置

  • 1、引入依赖包

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
    dependency>
    
  • 2、在配置文件中添加

    eurec.client.server-url.defaultZone=http://localhost:8761/eureka/
    
  • 3、在启动文件中添加

    @SpringBootApplication
    @EnableEurekaClient
    public class SystemApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(SystemApplication.class, args);
        }
    
    }
    
  • 4、刷新浏览器查看服务是否已经注册成功

    spring-clound基础开发_第2张图片

四、网关的配置

  • 1、创建一个网关模块

  • 2、在网关中引入依赖包

    <dependencies>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-gatewayartifactId>
        dependency>
        
        <dependency>
            <groupId>org.springframework.cloudgroupId>
            <artifactId>spring-cloud-starter-netflix-eureka-clientartifactId>
        dependency>
    dependencies>
    
  • 3、修改配置文件

    server.port=8000
    spring.application.name=gateway
    server.servlet.context-path=/gateway
    spring.main.web-application-type=reactive 
    eurec.client.server-url.defaultZone=http://localhost:8761/eureka/
    
    
    
    # 注册一个服务
    spring.cloud.gateway.routes[0].id=system
    spring.cloud.gateway.routes[0].uri.=http://localhost:9001
    spring.cloud.gateway.routes[0].predicates[0].name=Path
    spring.cloud.gateway.routes[0].predicates[0].args[0]=/system/**
    # 注册一个服务
    spring.cloud.gateway.routes[1].id=file
    spring.cloud.gateway.routes[1].uri.=http://localhost:9000
    spring.cloud.gateway.routes[1].predicates[0].name=Path
    spring.cloud.gateway.routes[1].predicates[0].args[0]=/file/**
    
  • 4、启动文件

    package com.example;
    
    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @SpringBootApplication
    @EnableEurekaClient
    public class GatewayApplication {
    
        public static void main(String[] args) {
            SpringApplication.run(GatewayApplication.class, args);
        }
    
    }
    
  • 5、使用网关的地址直接访问别的路由http://localhost:8000/system/hello

你可能感兴趣的:(java开发,spring,java,后端)