赞
踩
使用的技术是springboot+ktor+mybatis-plus,可以参考 上一篇文章,此处将springmvc替换成ktor,ktor使用内置服务器是netty性能高效的同时也支持协程调度,整体整合之后启动比原有的速度快上不少,ktor是kotlin一个公司弄出来的所以不用担心项目不在维护的问题,目前ktor也能使用Shiro做为权限管理,整体而言感觉可以嵌入spring生态中,本案例仅仅只是模拟真实开发环境中需要用到的多模块项目的方式,项目本身只做为演示,实际使用过程需要在此基础上做好模块规划与项目依赖规划等。
plugins { // springboot 插件依赖 id 'org.springframework.boot' version '2.7.0' id 'io.spring.dependency-management' version '1.0.11.RELEASE' // kotlin 插件依赖 id 'org.jetbrains.kotlin.jvm' version "$kotlin_version" // kotlin对 springboot 插件依赖 id "org.jetbrains.kotlin.plugin.spring" version "$kotlin_version" // kotlin noarg插件依赖 - 主要作用给data class 添加无参构造函数使反射能正常识别到 id "org.jetbrains.kotlin.plugin.noarg" version "$kotlin_version" // kotlin noarg插件依赖 - 主要作用给class 去掉final对class的修饰 id "org.jetbrains.kotlin.plugin.allopen" version "$kotlin_version" } group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/spring' } maven { url 'https://maven.aliyun.com/repository/spring-plugin' } maven { url "https://maven.pkg.jetbrains.space/public/p/ktor/eap" } mavenCentral() } dependencies {} subprojects { apply plugin: "org.springframework.boot" apply plugin: "io.spring.dependency-management" apply plugin: "org.jetbrains.kotlin.jvm" apply plugin: "org.jetbrains.kotlin.plugin.spring" apply plugin: "org.jetbrains.kotlin.plugin.noarg" apply plugin: "org.jetbrains.kotlin.plugin.allopen" group = 'com.example' version = '0.0.1-SNAPSHOT' sourceCompatibility = '1.8' repositories { maven { url 'https://maven.aliyun.com/repository/public' } maven { url 'https://maven.aliyun.com/repository/central' } maven { url 'https://maven.aliyun.com/repository/google' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' } maven { url 'https://maven.aliyun.com/repository/spring' } maven { url 'https://maven.aliyun.com/repository/spring-plugin' } maven { url "https://maven.pkg.jetbrains.space/public/p/ktor/eap" } mavenCentral() } dependencies { // 注意:这里使用的是 spring-boot-starter不是spring-boot-starter-web implementation 'org.springframework.boot:spring-boot-starter' // kotlin - kotlin与srpingboot中需要使用如下依赖,此处配置成通用子项目无需配置 implementation 'com.fasterxml.jackson.module:jackson-module-kotlin' implementation 'org.jetbrains.kotlin:kotlin-reflect' implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8' } bootJar { enabled = false } jar { enabled = true } }
ktor_version=2.0.2
kotlin_version=1.7.0
spring_version=2.7.0
mybatis_version=3.5.2
velocity_version=1.7
druid_spring_version=1.2.11
plugins { } dependencies { // mybatis implementation "com.baomidou:mybatis-plus-boot-starter:$mybatis_version" implementation "com.baomidou:mybatis-plus-generator:$mybatis_version" // 代码生成器 implementation "org.apache.velocity:velocity:$velocity_version" // 代码生成器需要的默认模板引擎 //mysql数据库依赖 runtimeOnly 'mysql:mysql-connector-java' implementation "com.alibaba:druid-spring-boot-starter:$druid_spring_version" implementation project (':skm-contller-web') } bootJar { enabled = true }
plugins {
}
dependencies {
// ktor
api "io.ktor:ktor-server-core-jvm:$ktor_version"
implementation "io.ktor:ktor-server-content-negotiation-jvm:$ktor_version"
implementation "io.ktor:ktor-serialization-jackson-jvm:$ktor_version"
implementation "io.ktor:ktor-server-netty-jvm:$ktor_version"
// mybatis
implementation "com.baomidou:mybatis-plus-boot-starter:$mybatis_version"
}
plugins {
}
dependencies {
// mybatis
api "com.baomidou:mybatis-plus-boot-starter:$mybatis_version"
implementation "com.baomidou:mybatis-plus-generator:$mybatis_version" // 代码生成器
implementation "org.apache.velocity:velocity:$velocity_version" // 代码生成器需要的默认模板引擎
// mysql数据库依赖
runtimeOnly 'mysql:mysql-connector-java'
implementation "com.alibaba:druid-spring-boot-starter:$druid_spring_version"
}
plugins {
}
dependencies {
implementation project (':skm-comm')
implementation project (':skm-service')
}
[点击下载demo]
注意,不要使用 gradle kotlin dsl 俗称 gradle.kts 做为项目构建工具,目前测试过无法在gradle.kts使用kapt插件,kapt可以开启querydsl的编译构建工作,这个效果和maven类似,使用下来gradle还是可以放心使用的,gradle.kts坑比较多不建议做为实际开发项目的构建工具,如果不知道如何生成spring的gradle项目可以在spring 脚手架中选择java->gradle这样构建出来的项目就是普通的gradle项目,手动导入kotlin插件即可。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。