idea gradle spring cloud 微服务项目

这里是以最简单的spring cloud 微服务项目搭建,具体的内容自行增加。

整体结构图

在这里插入图片描述

gradle版本号控制(可修改)

在这里插入图片描述

settings.gradle

rootProject.name = 'gradlecloud'//主工程项目
include 'common'//子工程公共类
include 'gateway'//网关
include 'services'//子服务

gradlecloud的build.gradle

buildscript {//构建gradle脚本自身需要的资源,可以声明的资源包括依赖项、第三方插件、maven仓库地址等
    ext{
        //统一版本管理
        lombokVersion = '1.18.20'//lombok版本
        springBootVersion = '2.3.12.RELEASE'//spring boot 版本
        springCloudVersion = 'Hoxton.SR12'//spring cloud 版本
        springCloudAlibabaVersion = '2.2.7.RELEASE'//spring cloud alibaba 版本
        springCloudStarterBootstrapVersion = '3.1.2'//bootstrap.yml版本
        commonsLangVersion = '2.5'//StringUtils工具类 commons-lang版本
        mysqlVersion = '8.0.23'//mysql版本
        mybatisSpringBootVersion = '2.1.0'//mybatis版本
        pagehelperVersion = '1.2.13'//分页插件pageHelper版本
        japidocsVersion = '1.4.4'//生成离线接口文档JApiDocs版本
    }

    //设置仓库
    repositories {
        //从前到后顺序执行,找不到就往后找。
        mavenLocal()//本地仓库
        maven { url 'https://maven.aliyun.com/repository/public' }//镜像仓库
        mavenCentral()//官方仓库
    }

    dependencies {
        //spring-boot-gradle插件,方便版本管理
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}

//全局配置,包括root和其子项目
allprojects {
    apply plugin: 'java'
    group 'com.fu'//项目组
    version '1'//项目版本
    sourceCompatibility = 1.8//java版本
    targetCompatibility = 1.8//java版本

    tasks.withType(JavaCompile){
        options.encoding = "UTF-8"
    }

    repositories {
        //从前到后顺序执行,找不到就往后找。
        mavenLocal()//本地仓库
        maven { url 'https://maven.aliyun.com/repository/public' }//镜像仓库
        mavenCentral()//官方仓库
    }
}

//配置所有子项目
subprojects {
    apply plugin: 'io.spring.dependency-management'//版本管理插件

    //dependencyManagement版本统一管理,类似maven的dependencyManagement
    dependencyManagement{
        dependencies {
            //统一版本管理
            dependency "org.projectlombok:lombok:${lombokVersion}"
            dependency "org.springframework.cloud:spring-cloud-starter-bootstrap:${springCloudStarterBootstrapVersion}"
            dependency "commons-lang:commons-lang:${commonsLangVersion}"
            dependency "mysql:mysql-connector-java:${mysqlVersion}"
            dependency "org.mybatis.spring.boot:mybatis-spring-boot-starter:${mybatisSpringBootVersion}"
            dependency "com.github.pagehelper:pagehelper-spring-boot-starter:${pagehelperVersion}"
            dependency "io.github.yedaxia:japidocs:${japidocsVersion}"
        }
        imports {
            mavenBom "org.springframework.boot:spring-boot-dependencies:${springBootVersion}"//Spring Boot
            mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"//Spring Cloud
            mavenBom "com.alibaba.cloud:spring-cloud-alibaba-dependencies:${springCloudAlibabaVersion}"//Spring Cloud Alibaba
        }
    }
}

common

公共类可以存放公共entity、dao、mapper、util等
在这里插入图片描述
common的build.gradle

apply plugin: 'java'
group 'com.fu'
version '1'
dependencies {
    annotationProcessor 'org.projectlombok:lombok'//注释处理器
    implementation 'org.projectlombok:lombok'//引入lombok依赖
}

gateway

网关(filter和redis都不是必须的,注册与服务发现中心我用的是nacos,这里我就不演示了,不然太长了)
在这里插入图片描述
gateway的build.gradle

apply plugin: 'org.springframework.boot'
dependencies {
    implementation project(':common')
    implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
    implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config'
    implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery'
    implementation 'org.springframework.boot:spring-boot-starter-webflux'
    implementation 'org.springframework.cloud:spring-cloud-starter-gateway'
    implementation 'org.springframework.cloud:spring-cloud-starter-loadbalancer'
    implementation 'org.springframework.boot:spring-boot-starter-data-redis'
}
bootJar {//修改打成jar包以后的名字
    baseName('gateway')//自定义的jar包名
    version(null)//版本号
    mainClassName = 'com.fu.gateway.GatewayApplication'
}

services

在这里插入图片描述
services的build.gradle(像mysql、mybatis我都注释掉了,开放注解即可使用,这里还是以入门为主)

apply plugin: 'org.springframework.boot'
dependencies {
    implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
    implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-config'
    implementation 'com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery'
    implementation 'org.springframework.boot:spring-boot-starter-web'
//    implementation 'org.springframework.boot:spring-boot-starter-jdbc'
//    implementation 'org.springframework.boot:spring-boot-starter-validation'
//    implementation 'mysql:mysql-connector-java'
//    implementation 'org.mybatis.spring.boot:mybatis-spring-boot-starter'
//    implementation 'com.github.pagehelper:pagehelper-spring-boot-starter'
}
bootJar {//修改打成jar包以后的名字
    baseName('services')//自定义的jar包名
    version(null)//版本号
    mainClassName = 'com.fu.services.ServicesApplication'
}

logbcak日志输出(建议配置)

logback-spring.xml

<configuration scanPeriod="60 seconds">
    <!-- 动态日志级别 -->
    <jmxConfigurator />
    <!-- 定义日志文件 输出位置 -->
    <property name="log_dir" value="./logs/XX项目/" />

    <!-- 控制台输出日志 -->
    <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss}] [%thread] [%magenta(%level)] %green([%logger]) >>> %cyan(%msg) %n</pattern>
        </encoder>
    </appender>

    <!-- 日志输出到文件 -->
    <appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>INFO</level>
        </filter>
        <rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
            <fileNamePattern>${log_dir}/log-%d{yyyy-MM-dd}.log</fileNamePattern>
            <!-- 日志保留最大天数 -->
            <maxHistory>15</maxHistory>
            <!-- 重启项目后删除日志 -->
            <cleanHistoryOnStart>true</cleanHistoryOnStart>
        </rollingPolicy>
        <encoder>
            <pattern>[%d{yyyy-MM-dd HH:mm:ss}] [%thread] [%level] [%logger] >>> %msg %n</pattern>
        </encoder>
    </appender>
    <logger name="demo" level="INFO"/>
    <!-- root级别 DEBUG -->
    <root level="INFO">
        <!-- 控制台输出 -->
        <appender-ref ref="console" />
        <!-- 文件输出 -->
        <appender-ref ref="FILE" />
    </root>
</configuration>
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值