Spring Cloud环境搭建

Spring Cloud可以看成一堆Spring Boot项目
使用的IDEA,不像eclipse那样可以同时打开多个项目,所以用maven管理多个子模块(Spring Boot)做演示

首先创建一个父Maven项目,引入spring-cloud,spring-boot,spring-cloud-alibaba的依赖
pom.xml格式如下,如果用到了alibaba的Spring Cloud依赖,也要加入spring-cloud-alibaba-dependencies

<?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>com.coddox</groupId>
    <artifactId>springcloud-learning</artifactId>
    <packaging>pom</packaging>
    <version>1.0-SNAPSHOT</version>

    <!-- 子模块 -->
    <modules>
        <module>eureka</module>
    </modules>

    <!-- 版本管理 -->
    <properties>
        <spring-boot-dependencies>2.1.14.RELEASE</spring-boot-dependencies>
        <spring-cloud-denpendencies>Greenwich.SR6</spring-cloud-denpendencies>
        <spring-cloud-alibaba-denpendencies>2.1.2.RELEASE</spring-cloud-alibaba-denpendencies>
    </properties>

    <!-- 依赖管理 -->
    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot-dependencies}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud-denpendencies}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba-denpendencies}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
</project>

在这里注意一点,spring boot和spring cloud的大版本号要对应,虽然spring cloud都是英文字母,看不出对应关系,我这里在网上找的图,可以简要看下
image.png

这里给出一个接口,用来查看实时的版本信息:
https://start.spring.io/actuator/info
将返回json放到https://www.json.cn/中格式化一下就能看到了
image.png

如果用到了alibaba的spring cloud依赖,它也是有版本对应关系的,在
spring-cloud-alibaba版本对应关系 中可以看到
image.png

我这里spring cloud用的Greenwich,所以spring boot用的2.1x,spring-cloud-alibaba版本用的2.1.2.RELEASE 如果版本不对应,启动spring boot的时候就会发生莫名其妙的错误

创建子模块,这里简单做下演示,就创建个eureka算了
pom.xml加入spring-cloud-starter-netflix-eureka-server,提供eureka服务端支持,spring-boot-starter-web,提供内置的tomcat容器,和spring mvc的支持

<?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">
    <parent>
        <artifactId>springcloud-learning</artifactId>
        <groupId>com.coddox</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>
    <artifactId>eureka</artifactId>

    <dependencies>
        <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-web</artifactId>
        </dependency>
    </dependencies>
</project>

这里给出工程目录
image.png

在eureka模块中的resources文件夹创建application.properties(yml),配置eureka和端口

# 单机版eureka服务端不需要注册本机信息到eureka服务端(单机版eureka服务端指的就是自己),eureka集群除外,因为要相互注册和同步客户端注册信息
eureka.client.register-with-eureka=false
# 单机版eureka不需要拉取所有eureka客户端的注册信息,因为注册信息注册地址就是自己,道理同上
eureka.client.fetch-registry=false
# 启动端口
server.port=8080	

创建启动类

package com.eureka;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

/**
 * @author zhangkun
 * @date 2020/6/10 9:47
 */
@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class, args);
    }
}

启动之后就能访问eureka了
image.png

源码:https://codox.coding.net/public/springcloud-learning/springcloud-learning/git/files

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×