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都是英文字母,看不出对应关系,我这里在网上找的图,可以简要看下
这里给出一个接口,用来查看实时的版本信息:
https://start.spring.io/actuator/info
将返回json放到https://www.json.cn/中格式化一下就能看到了
如果用到了alibaba的spring cloud依赖,它也是有版本对应关系的,在
spring-cloud-alibaba版本对应关系 中可以看到
我这里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>
这里给出工程目录
在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了
源码:https://codox.coding.net/public/springcloud-learning/springcloud-learning/git/files