Spring Cloud微服务实战 打造企业级优惠券系统 4-2 搭建Eureka Server模块

0    课程地址

https://coding.imooc.com/lesson/380.html#mid=28548

1    主要内容
1.1  idea搭建父模块

a  搭建父模块

file--》new--》project--》Maven--》Next--》

groupid 输入:com.imooc.coupon
ArtifactId 输入:imooc-coupon
Version 输入:1.0-SNAPSHOT

next--》

projectname改为 imooc-coupon

-->Finish即可。

b  父模块imooc-coupon.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.imooc.coupon</groupId>
    <artifactId>imooc-coupon</artifactId>
    <version>1.0-SNAPSHOT</version>

    <!-- 子模块,新建model后会自动生成 -->
    <modules>
        <module>coupon-eureka</module>
    </modules>

    <!-- 项目的打包类型, 即项目的发布形式, 默认为 jar. 对于聚合项目的父模块来说, 必须指定为 pom -->
    <packaging>pom</packaging>

    <!-- springCloud 也是基于Springboot开发,引入springboot 依赖 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
    </parent>

    <!-- SpringCloud版本 -->
    <properties>
        <spring-cloud.version>Greenwich.RELEASE</spring-cloud.version>
    </properties>

    <dependencies>
        <!-- lombok 工具通过在代码编译时期动态的将注解替换为具体的代码,
       IDEA 需要添加 lombok 插件 -->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <version>1.16.18</version>
        </dependency>
        <!-- 测试用例依赖 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <!-- 标识springcloud版本 -->
    <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>

    <!-- 配置远程仓库 -->
    <repositories>
        <repository>
            <id>spring-milestones</id>
            <name>Spring Milestones</name>
            <url>https://repo.spring.io/milestone</url>
            <snapshots>
                <enabled>false</enabled>
            </snapshots>
        </repository>
    </repositories>


    
</project>
1.2  idea搭建子模块

a  搭建子模块

右键imooc-coupon项目--》new --》module--》默认maven--》next--》

artifactid选为:coupon-eureka

next--》

modelname修改为coupon-eureka

--》finish

b  子模块coupon-eureka.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">
    <parent>
        <artifactId>imooc-coupon</artifactId>
        <groupId>com.imooc.coupon</groupId>
        <version>1.0-SNAPSHOT</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <!-- goupid和versionid 默认继承自parent标签中,versionid也可以显示声明,以声明为准确的 -->
    <artifactId>coupon-eureka</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>jar</packaging>

    <!-- 需要依赖 eureka server: 提供服务发现与服务注册 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

    <!--
    SpringBoot的Maven插件, 能够以Maven的方式为应用提供SpringBoot的支持,可以将
    SpringBoot应用打包为可执行的jar或war文件, 然后以通常的方式运行SpringBoot应用
 -->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>

</project>

C  子模块applicatoin.yml配置文件设置

#应用名称
spring:
  application:
    name: coupon-eureka

#端口号
server:
  port: 8000

#主机名
eureka:
  instance:
    hostname: localhost
#单节点Eureka
  client:
  #标识是否从Eureka中获取注册信息,默认为true,如果为单节点eureka Server
  #不需要同步其他节点的数据,设置为false
    fetch-registry: false
    #是否将自己注册到Eureka上,由于当前应用是单节点eurekaServer
    #需要设置为false
    register-with-eureka: false
    #设置eureka server地址,查询服务和注册服务都需要依赖这个地址
    service-url:
      defalutZone: http://${eureka.instance.hostname}:${server.port}/eureka/

D  编写测试用例

package com.imooc.coupon;


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

/**
 * EurekaApplication
 *
 * @date 2021/1/7
 * @author 魏豆豆
 */
//SpringBoot应用,需要加上SpringBootApplication这个注解
@SpringBootApplication
//SpringCloud为其提供,加入这个注解为初始化Eureka运行环境
@EnableEurekaServer
public class EurekaApplication {

    public static void main(String [] args){

        SpringApplication.run(EurekaApplication.class,args);
    }

}

E  启动springboot程序,

查看http://localhost:8000/

关于此处介绍见下节

1.3  遇到问题

a    测试用例引入不到@SpringBootApplication 注解

解决方案:pom格式问题。经过排查,是pom.xml引入spirngcloud版本的时候多了个'}'

b    yml没有自动提示

解决方案:参见开发软件--》idea文章。没有引入Spring Assistance插件

2    其他内容

2.1  yml中自己新学到的内容

fetch-registry: (自己理解:接收server内容
register-with-eureka: (自己理解:把自己注册到eureka)
 
原文地址:https://www.cnblogs.com/1446358788-qq/p/14238925.html