暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

从零开始搭建Spring Cloud项目之eureka

技术白小白 2018-10-24
529

最近出差的三个月,客户要求使用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, 通过浏览器访问,我们可以看到正常启动。




文章转载自技术白小白,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论