SpringCloud-Eureka

136 阅读2分钟

配置文件太多了,还是保存一下,同时梳理一下。

服务端

  • 服务端pom文件,中间的cloud-api-commons是我自己的,不需要的删除就行。
<dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <!--复用组件-->
        <dependency>
            <groupId>com.hello</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${parent.version}</version>
        </dependency>
        <!--web通用配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--一般通用配置-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
    </dependencies>
</project>
  • application.yml
server:
  port: 7001

eureka:
  instance:
    #设置自己的主机名
    hostname: eureka7001.com
  client:
    #设置不注册自己
    register-with-eureka: false
    #设置不注册自己
    fetch-registry: false
    service-url:
      #集群配置,7001注册7002,相互注册
      defaultZone: http://eureka7002.com:7002/eureka/
      #单机版的配置
     # defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#  server:
#    #关闭eureka自我保护,一般不开启
#    enable-self-preservation: false
#    #设置删除时间间隔为2秒
#    eviction-interval-timer-in-ms: 2000
  • 主启动类上的两个注解
@EnableEurekaServer
@SpringBootApplication

客户端

  • pom文件,同样通用组件是我自己的,不需要的删除
<dependencies>
        <dependency>
            <groupId>com.hello</groupId>
            <artifactId>cloud-api-commons</artifactId>
            <version>${parent.version}</version>
        </dependency>
        <!-- 包含了sleuth zipkin 数据链路追踪-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-zipkin</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <!--eureka client-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
            <version>1.1.24</version>
            <!--如果没写版本,从父层面找,找到了就直接用,全局统一-->
        </dependency>
        <!--mysql-connector-java-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <!--热部署-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
</project>
  • application.yml
server:
  port: 8001

spring:
  application:
    name: cloud-payment-service
  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: org.gjt.mm.mysql.Driver
    url: jdbc:mysql://127.0.0.1:3306/springcloud2020?userUnicode=true&&characterEncoding=utf-8&useSSL=false
    username: root
    password: 123456


eureka:
  client:
    #是否注册自己到服务端,客户端是true
    register-with-eureka: true
    #服务端的url配置,多个要用,隔开全部加上
    service-url:
      defaultZone: http://eureka7001.com:7001/eureka,http://eureka7002:7002/eureka
    #是否从服务端抓取已有的注册信息,默认为true,单节点无所谓,但是集群必须要true才能配合ribbon使用负载均衡
    fetch-registry: true
  instance:
    #不再使用主机名,而是使用自己的id名
    instance-id: payment8001
    #访问路径可以显示IP地址
    prefer-ip-address: true
#    #客户端向服务端发送心跳的时间间隔,默认是30秒
#    lease-renewal-interval-in-seconds: 1
#    #服务端等待最后一次心跳的等待时间上限,默认是90秒,超时将剔除服务
#    lease-expiration-duration-in-seconds: 2

mybatis:
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.hello.springcloud.entities #所有Entity别名类所在包

  • resources下面mapper下的xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.hello.springcloud.dao.PaymentDao">
    <insert id="create" parameterType="Payment" useGeneratedKeys="true" keyProperty="id">
        insert into payment(serial) values(#{serial});
    </insert>
    <resultMap id="BaseResultMap" type="com.hello.springcloud.entities.Payment">
        <id column="id" property="id" jdbcType="BIGINT"/>
        <result column="serial" property="serial" jdbcType="VARCHAR"/>
    </resultMap>
    <select id="getPaymentById" parameterType="Long" resultMap="BaseResultMap">
        select * from payment where id=#{id}
    </select>
</mapper>
  • controller类
package com.hello.springcloud.controller;

import com.hello.springcloud.entities.CommonResult;
import com.hello.springcloud.entities.Payment;
import com.hello.springcloud.service.PaymentService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
 * @author :QiuShi
 * @Date :2020/10/31 20:00
 * @Version 1.0
 */
@RestController
@Slf4j
public class PaymentController
{
    @Resource
    private PaymentService paymentService;

    @Value("${server.port}")
    private String serverPort;

    @PostMapping(value = "/payment/create")
    public CommonResult create(@RequestBody Payment payment)
    {
        int result= paymentService.create(payment);
        log.info("插入结果:"+result);
        int x=90/2;
        if(result>0)
        {
            return new CommonResult(200,"插入数据库成功,"+serverPort,result);
        }else {
            return new CommonResult(444,"插入数据库失败",null);
        }
    }

    @GetMapping(value = "/payment/get/{id}")
    public CommonResult getPaymentById(@PathVariable("id") Long id)
    {
        Payment payment= paymentService.getPaymentById(id);
        log.info("插入结果:"+payment);
        if(payment!=null)
        {
            return new CommonResult(200,"查询成功,serverPort:"+serverPort,payment);
        }else {
            return new CommonResult(444,"没有对应记录,查询ID:"+id,null);
        }
    }
}

  • 返回前端的通用类
package com.hello.springcloud.entities;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

/**
 * @Author :QiuShi
 * @Date :2020/10/31 15:50
 * @Version 1.0
 */
@Data
@AllArgsConstructor
@NoArgsConstructor
public class CommonResult<T> {
    private Integer code;
    private String message;
    private T data;
    public CommonResult(Integer code,String message){
        this(code,message,null);
    }
}
  • 实体类上使用lombok的三个注解,get和set方法,全参和无参构造,没有的自己写
@Data
@AllArgsConstructor
@NoArgsConstructor
  • 主启动类上的两个注解
@SpringBootApplication
@EnableEurekaClient