Spring Boot整合Spring Cloud

Java EE 目錄:https://blog.csdn.net/dkbnull/article/details/87932809
Spring Boot 專欄:https://blog.csdn.net/dkbnull/column/info/26341
Spring Cloud 專欄:https://blog.csdn.net/dkbnull/column/info/36820

0. 開發環境

  • IDE:IntelliJ IDEA 2017.1 x64

  • jdk:1.8.0_91

  • Spring Boot:2.1.1.RELEASE

  • Spring Cloud:Finchley.RELEASE


1. 新建父Maven工程

1.1 新建Maven工程

在這裏插入圖片描述
在這裏插入圖片描述
在這裏插入圖片描述

1.2 刪除src文件夾

在這裏插入圖片描述

1.3 引入依賴

父Maven工程pom文件定義爲父pom文件,並引入依賴

<?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>

    <groupId>cn.wbnull</groupId>
    <artifactId>springclouddemo</artifactId>
    <version>1.0.0</version>
    <packaging>pom</packaging>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.1.RELEASE</version>
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
    </properties>

    <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>
</project>

2. 新建Spring Boot服務提供者

2.1 新建Spring Boot服務

右鍵SpringCloudDemo–>New–>Module,選擇Maven項目
在這裏插入圖片描述
在這裏插入圖片描述

2.2 引入依賴

<?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>

    <artifactId>springbootprovider</artifactId>
    <packaging>jar</packaging>

    <parent>
        <groupId>cn.wbnull</groupId>
        <artifactId>springclouddemo</artifactId>
        <version>1.0.0</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

2.3 新建Spring Boot入口類

package cn.wbnull.springbootprovider;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class SpringBootProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootProviderApplication.class, args);
    }
}

2.4 新建application.yml

resources 文件夾下新建application.yml

server:
  port: 8081
  servlet:
    context-path: /springbootprovider

spring:
  application:
    name: springbootprovider

2.5 新建控制器類

package cn.wbnull.springbootprovider.controller;

import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Scope("prototype")
public class GatewayController {

    @GetMapping(value = "/gateway")
    public String gateway() throws Exception {
        return "hello world";
    }
}

2.6 目錄結構

Spring Boot 服務目錄結構如下
在這裏插入圖片描述

3. 新建Spring Boot服務消費者

3.1 新建Spring Boot消費者

與創建Spring Boot服務提供者類似,新建Spring Boot服務消費者
在這裏插入圖片描述

3.2 引入依賴

與Spring Boot服務提供者依賴類似

<?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>

    <artifactId>springbootconsumer</artifactId>
    <packaging>jar</packaging>

    <parent>
        <groupId>cn.wbnull</groupId>
        <artifactId>springclouddemo</artifactId>
        <version>1.0.0</version>
    </parent>

    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
</project>

3.3 新建Spring Boot入口類

這裏要注意,與Spring Boot服務提供者入口類不同,服務消費者入口類新增了一段代碼。

RestTemplate是一個對HTTP請求進行了封裝的類,藉助RestTemplate,Spring應用能夠方便地使用REST資源。

package cn.wbnull.springbootconsumer;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

@SpringBootApplication
public class SpringBootConsumerApplication {

    @Bean
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }

    public static void main(String[] args) {
        SpringApplication.run(SpringBootConsumerApplication.class, args);
    }
}

3.4 新建application.yml

server:
  port: 8082
  servlet:
    context-path: /springbootconsumer

spring:
  application:
    name: springbootconsumer

3.5 新建控制器類

這裏的gateway()方法沒有自己的實現,而是去調用了服務提供者的gateway()方法。

package cn.wbnull.springbootconsumer.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Scope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;

@RestController
@Scope("prototype")
public class GatewayController {

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping(value = "/gateway")
    public String gateway() throws Exception {
        return restTemplate.getForObject("http://localhost:8081/springbootprovider/gateway", String.class);
    }
}

4. 測試

我們先啓動服務提供者,再啓動服務消費者,然後瀏覽器訪問 http://127.0.0.1:8082/springbootconsumer/gateway ,獲取到正確結果。到這,一個簡單Spring Cloud 項目的服務提供者和服務消費者就完成了。
在這裏插入圖片描述



GitHub:https://github.com/dkbnull/SpringCloudDemo
微信:https://mp.weixin.qq.com/s/7ZrgoRyAcs7agzpVtsWe4w



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章