最近出差的三个月,客户要求使用Spring Cloud开发,因此开始接触Spring Cloud, 在此记录搭建过程。


一、准备工作
但由于工作环境的保密性,不能连接互联网,在项目搭建的时候遇到超级多的问题,尤其是依赖的问题。 还好有笨办法,将Spring Cloud 所需的所有依赖全部下载好,拷贝到工作环境,以此来解决依赖问题。
二、开始搭建
目前在我的本地,因此直接使用常规的方法搭建,如果是无网环境,可以按照这个项目结构copy就好,但是依赖一定要准备好!
step1: 使用IDEA搭建,直接上图


重点:此处一定要选择红色框中的


项目搭建完成,

启动主类

配置文件

maven 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>com.baymux</groupId> <artifactId>spring-cloud-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>jar</packaging> <name>spring-cloud-demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </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.SR1</spring-cloud.version> </properties> <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-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> </project>
代码如下:
EurekaServerApplication.java
package com.baymux.springcloud;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@EnableEurekaServer@SpringBootApplicationpublic class EurekaServerApplication { public static void main(String[] args) { SpringApplication.run(EurekaServerApplication.class, args); } }
application.properties
eureka.environment=dev # 端口 server.port=8081 server.servlet.session.timeout=60 # 服务名称 spring.application.name=eureka-server # 下面两个一定要false, 因为此程序要作为服务端,但jar中存在eureka-client.jar, 所以要false, 否则启动会报错 # 是否注册到eureka eureka.client.register-with-eureka=false # 是否获取注册信息 eureka.client.fetch-registry=false # 以上表明为 eureka server # 服务名称 eureka.instance.hostname=127.0.0.1 # eureka 的服务地址, /eureka 是固定的,此处为注册中心集群配置 #eureka.client.service-url.defaultZone=http://01.server.eureka:8082 eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
启动项目:

通过浏览器访问结果如下:

自此,eureka搭建完成,可以正常使用,
第二种搭建方法:
1、登录网址:https://start.spring.io/,填写项目基本信息

2、选择生成项目,我们将会得到一个demo.zip的压缩包

将压缩包解压导入IDEA,其他和第一种方法操作一样。
项目搭建完成了,但是项目结构不太友好,整个spring cloud 项目中会有 服务注册与发现组件,即我们刚刚搭建的组件,还有服务提供者,服务消费者,Hystrix熔断,feign,ribbon负载均衡等组件,因此我们要将组件整合到一个项目中,添加各个模块即可(Module),因此我们更改一下项目结构
1、首先在刚刚搭建的eureka-server目录的上一层创建pom.xm文件,编辑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> <groupId>com.baymux</groupId> <artifactId>spring-cloud-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>pom</packaging> <modules> <module>eureka-server</module> </modules> <name>spring-cloud-demo</name> <description>Demo project for Spring Boot</description> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.0.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </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.SR1</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> </project>
同时更改eureka-server中的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> <parent> <groupId>com.baymux</groupId> <artifactId>spring-cloud-demo</artifactId> <version>0.0.1-SNAPSHOT</version> </parent> <artifactId>eureka-server</artifactId> <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding> <java.version>1.8</java.version> </properties> <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-test</artifactId> <scope>test</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
可以看出,只是把eureka-server的pom.xml文件中部分代码提出来了,然后将spring-cloud-demo添加module即可

选择+,导入module即可

至此,项目结构调整完成,调整后的项目结构如下:

启动eureka-server, 通过浏览器访问,我们可以看到正常启动。





