基于gradle构建spring cloud项目

构建环境

idea:2021.1.2

gradle:4.10.3

项目介绍

gradle-spring-cloud 根项目,用于统一一些公共配置

gradle-eurakeserver 模块使用eurake提供服务注册功能

gradle-getway 提供网关服务

gradle-serviceA和gradle-serviceB用来提供接口服务,服务名相同,用于测试getway 负载均衡

构建开始

一、创建根项目(gradle-spring-cloud)

1.idea创建新的gradle项目

2.配置项目gradle

3.修改buid.gradle文件

buildscript {
    ext {
        springBootVersion = '2.0.7.RELEASE'
        springCloudVersion = 'Finchley.SR2'
    }
    repositories {
        maven {  url "http://nexus.xxxxx.com/repository/maven-public" }
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}
allprojects {
    group 'org.example'
    version '1.0-SNAPSHOT'
    apply plugin: 'java'
    // 指定JDK版本
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    //指定编码格式
    tasks.withType(JavaCompile) {
        options.encoding = "UTF-8"
    }

    repositories {
        maven { url "http://nexus.xxxxx.com/repository/maven-public" }
    }
}

subprojects {
    //dependency-management 插件
    apply plugin: 'io.spring.dependency-management'
    dependencyManagement {
        imports {
            mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
            mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}"
        }
    }
    jar {
        manifest.attributes provider: 'gradle'
    }


}

说明: maven {  url "http://nexus.xxxxx.com/repository/maven-public" } 配置的是 maven私服地址,大家可以配置成阿里云的镜像地址。

4.build下项目,无报错,根项目构建成功。

二、构建gradle-eurakeserver服务注册中心

1.在根项目下,new module,取名为gradle-eurakeserver

2.修改build.gradle配置文件,加入相关依赖

apply plugin: 'org.springframework.boot'

dependencies {  //dependencies闭包
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
}

3.build项目

4.创建spring boot启动类

package org.example.eurake.server;

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

@SpringBootApplication
@EnableEurekaServer
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class,args);
    }
}

5.配置application.properties

server.port=7101
spring.application.name=gradle-eureka
#不向注册中心注册自己
eureka.client.register-with-eureka=false
#健康检测
eureka.client.fetch-registry=false
#开发环境关闭自我保护机制,保证不可用的服务及时剔除
eureka.server.enable-self-preservation=false
#间隔2秒钟剔除一次
eureka.server.eviction-interval-timer-in-ms=2000
#服务注册地址
eureka.client.service-url.defaultZone=http://127.0.0.1:7101/eureka

6.启动项目,访问 http://127.0.0.1:7101/  注册中心搭建完毕

 

三、搭建gradle-getway网关服务

1.在根项目下,new module,取名为gradle-getway

2.修改build.gradle配置文件,加入相关依赖

dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    implementation 'org.springframework.cloud:spring-boot-starter-data-redis-reactive'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-hystrix'
    implementation 'com.alibaba:fastjson:1.2.47'
}

3.build项目

4.创建spring boot启动类

@SpringBootApplication
@EnableDiscoveryClient
public class GetWayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GetWayApplication.class,args);
    }
}

5.配置application.yml

# 端口
server:
  port: 8000

spring:
  application:
    # 应用名称
    name: gradle-getway
  cloud:
    gateway:
      discovery:
        locator:
          # 是否和服务注册与发现组件结合,设置为 true 后可以直接使用应用名称调用服务
          enabled: true
      # 路由(routes:路由,它由唯一标识(ID)、目标服务地址(uri)、一组断言(predicates)和一组过滤器组成(filters)。filters 不是必需参数。)
      routes:
        # 路由标识(id:标识,具有唯一性)   转发指定服务并传入参数
        - id: route_addRequestParameter
          # 目标服务地址(uri:地址,请求转发后的地址)
          uri: lb://gradle-service
          # 路由条件(predicates:断言,匹配 HTTP 请求内容)
          predicates:
            ## 匹配 GET 请求
            - Method=GET
          # 过滤器(filters:过滤器,过滤规则)
          filters:
            ## 添加指定参数
            - AddRequestParameter=age, three

eureka:
  client:
    serviceUrl:
      # 注册中心地址
      defaultZone: http://127.0.0.1:7101/eureka

logging:
  level:
    # log 级别
    org.springframework.cloud.gateway: debug

6.启动getway,成功注册到eureka

四、创建gradle-service 服务,AB服务只是端口不同,所以只以A为例

1.在根项目下,new module,取名为gradle-serviceA

2.修改build.gradle配置文件,加入相关依赖

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-client'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
    implementation 'org.projectlombok:lombok:1.18.18'
    implementation 'redis.clients:jedis:2.9.0'
    implementation 'org.apache.commons:commons-pool2'

}

3.build项目

4.创建spring boot启动类

@SpringBootApplication
@EnableDiscoveryClient
public class ServiceApplicationA {
    public static void main(String[] args) {
        SpringApplication.run(ServiceApplicationA.class,args);
    }
}

5.配置application.yml

# 端口
server:
  port: 9000

# 应用名称
spring:
  application:
    name: gradle-service

eureka:
  client:
    serviceUrl:
      # 注册中心地址
      defaultZone: http://127.0.0.1:7101/eureka
    fetch-registry: true
    register-with-eureka: true

6.创建controller接口类

@RestController
public class ASayHelloController {

    /*
     * @ClassName ASayHelloController
     * @Desc TODO   读取配置文件中的端口
     * @Date 2019/5/20 23:24
     * @Version 1.0
     */
    @Value("${server.port}")
    private String port;

    /*
     * @ClassName ASayHelloController
     * @Desc TODO   Say Hello
     * @Date 2019/5/20 23:24
     * @Version 1.0
     */
    @RequestMapping("/hello")
    public String hello(){
        return "Hello!I'm a. port:" + port;
    }

}

7.相同的创建B服务,端口改为9001.

8.启动 AB服务,注册到注册中心,搭建完成

五、测试getway网关功能

调用网关地址如下 http://localhost:8000/hello

第一次返回 Hello!I'm a. port:9000 

第二次返回 Hello!I'm a. port:9001

基于gradle 构建简单的cloud 项目,完毕。

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值