• 【Eureka】springCloud项目搭建


    新建父maven项目

    groupId:pers.xzp.springCloud
    artifactId:springCloud

    父项目中仅仅需要一个pom文件,用于管理模块的依赖统一、继承等

    编辑pom文件

    首先项目包结构为:pom

    添加依赖声明:依赖声明,不会引入依赖,只有当模块引入依赖坐标的时候才会引入响应依赖

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <!--springcloud版本-->
        <spring-cloud.version>Finchley.SR2</spring-cloud.version>
        <springboot.version>2.0.6.RELEASE</springboot.version>
    </properties><!-- dependencyManagement:帮助我们去管理坐标的版本:仅仅声明,不引入依赖-->
    <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>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${springboot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement><dependencies>
        <!--springboot支持-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
        </dependency>
        <!--lombok-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--Devtools-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <!-- optional=true,依赖不会传递,该项目依赖devtools;之后依赖boot项目的项目如果想要使用devtools,需要重新引入 -->
            <!--<optional>true</optional>-->
        </dependency>
    </dependencies><build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <fork>true</fork>  <!-- 如果没有该生效标志,热部署的devtools不生效 -->
                </configuration>
            </plugin>
        </plugins>
    </build>
    View Code

    创建Eureka注册中心模块

    Eureka服务端作为服务注册中心

    模块名:eureka-registryCenter,端口:7001

    引入Eureka服务端依赖

    <dependencies>
        <!--Eureka服务端支持-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
    </dependencies>

    编辑核心配置文件

    server:
     #端口
    port: 7001
    eureka:
    instance:
       #服务注册中心实列的主机名
      hostname: localhost
    server:
       #关闭自我保护机制,防止失效的服务也被访问
    #   enable-self-preservation: false
       #该配置可以修改检查失效的服务器,每隔5s去扫描检查失效的服务 默认60s
      eviction-interval-timer-in-ms: 5000
    client:
       #是否向服务注册中心注册自己 自己注册了自己就是有毛病
      register-with-eureka: false
       #是否监测服务 翻译:获取注册
      fetch-registry: false
       #服务注册中心的配置内容,指定服务注册中心的位置
      service-url:
         #单机配置 就是访问注册中心的路径
        defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

    创建项目引导类

    作为Eureka服务端的引导类,需要被@EnableEurekaServer标注

    //@EnableEurekaServer:标注的类表示Eureka服务端,作为注册中心
    @EnableEurekaServer
    @SpringBootApplication
    public class RegistryCenter_7001 {
        public static void main(String[] args) {
            SpringApplication.run(RegistryCenter_7001.class);
        }
    }

    创建Eureka客户端:服务提供者

    模块名字:provider-payment8001 端口号:8001

    引入Eureka客户端依赖

    <!--eureka客户端支持  我们去写支付功能 服务-->
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
    </dependencies>

    编辑核心配置文件

    server:
    port: 8001
    # Eureka客户端取别名
    spring:
    application:
      name: payment
    eureka:
    client:
      service-url:
         # 注册Eureka客户端到服务注册中心 需要与注册中心配置对应
        defaultZone: http://localhost:7001/eureka

    编码

    实体类
    @Data
    public class User implements Serializable {
        private int id;
        private String name;
        @DateTimeFormat(pattern = "yyyy-MM-dd")
        private Date birthday;
    ​
        public User(int id, String name, Date birthday) {
            this.id = id;
            this.name = name;
            this.birthday = birthday;
        }
    ​
        public User() {
        }
    }
    Controller控制器
    //@Slf4j:使用log4j日志需要,默认生成log实例
    @Slf4j
    @Controller
    public class UserController {
    ​
        private static SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        @GetMapping("/getalluser")
        @ResponseBody
        public  String getAllUser(){
            User user = null;
            try {
                user = new User(1,"张三",sdf.parse("2020-10-10"));
            } catch (ParseException e) {
                log.debug("日期类型转换失败");
            }
            return user.toString();
        }
    }

    测试

    有服务端和客户端,类似WebSocket编程,需要我们先启动服务端;

    因此,我们需要先启动Eureka注册中心eureka-registryCenter,然后在启动Eureka客户端provider-payment8001

    浏览器输入:http://localhost:7001,会进入了Eureka服务注册中心

    输入:http://localhost:8001/getalluser,会访问到服务提供者的数据

     

    小结

    • 注册中心可以类比tomcat管理javaweb应用
    • Eureka有服务端和客户端概念,可以参考WebSocket编程
  • 相关阅读:
    16进制颜色转普通RGB
    (null)
    GIT配置
    -other linker flags
    cocoapods使用问题集锦(2017-04)
    关于@property与@syntheszie的使用问题
    iOS端一次视频全屏需求的实现(转)
    用C语言进行最基本的socket编程
    http和socket之长连接和短连接区别(转)
    socket,TCP/IP的理解(转)
  • 原文地址:https://www.cnblogs.com/xzp-blog/p/13793999.html
Copyright © 2020-2023  润新知