Kotlin+SpringBoot+JPA服务器开发本文主要介绍kotlin+springboot的服务器开发环境1.概述Kotlin是一种基于JVM的编程语言,是IDEA开发工具jetbrains开发的语言,也被谷歌选为Android开发的首选语言,因为完全兼容Java,所以也可以用于后端开发,比如集成我们在Java中使用的一些技术框架。本文将简单介绍与SpringBoot的集成。接下来,我将使用Gradleinit从头开始??。搭建Kotlin集成SpringBoot环境,也可以直接通过IDEA创建SpringBoot项目,选择Kotlin语言,这里就不展示了2.Gradleinit初始化项目可以通过gradleinit命令初始化项目,按照提示进行选择kotlinlanguage,kotlindsl等。..2??.1插件配置需要配置几个插件,其中springbootgradle插件org.springframework.bootSpringBoot官方提供了Gradle插件支持,可以打包程序作为可执行的jar或war包,运行SpringBoot应用程序,并使用spring-boot-dependencies管理版本io.spring.dependency-management自动从您使用的springboot版本导入spring-boot-dependenciesbomkotlin("jvm"):指定kotlin的版本kotlin("plugin.spring"):用于将open关键字添加到类中(否则它是最终的)仅限于某些spring注释,例如@Controller@Service..kotlin("plugin.jpa"):用于生成kotlin数据类无参构造函数,否则会提示Entity缺少Provincialconstructorplugins{//应用org.jetbrains.kotlin.jvmPlugin添加对Kotlin的支持。//id("org.jetbrains.kotlin.jvm")版本"1.7.10"id("org.springframework.boot")版本"2.6.11"id("io.spring.dependency-management")版本"1.0.13.RELEASE"kotlin("jvm")version"1.6.21"//引入spring插件可以在一些spring注解的类中加入open关键字,解决kotlin默认final问题kotlin("plugin.spring")version"1.6.21"//jpa插件的引入主要可以提供JPA一些注解类添加无参数构造函数kotlin("plugin.jpa")version"1.6.21"//应用应用插件添加Java构建CLI应用的支持。}java.sourceCompatibility=JavaVersion.VERSION_1_8configurations{compileOnly{extendsFrom(configurations.annotationProcessor.get())}}dependencies{//使用KotlinJUnit5integration.testImplementation("org.jetbrains.kotlin:kotlin-test-junit5")//使用JUnit5integration.testImplementation("org.junit.jupiter:junit-jupiter-engine:5.9.1")//此依赖项由应用程序使用。implementation("com.google.guava:guava:31.1-jre")implementation("org.jetbrains.kotlin:kotlin-reflect")implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8")//引入springbootwebdependencyimplementation("org.springframework.boot:spring-boot-starter-web")}tasks.named("test"){//使用JUnit平台进行单元测试。useJUnitPlatform()}tasks.withType{kotlinOptions{freeCompilerArgs=listOf("-Xjsr305=strict")jvmTarget="1.8"}}2.2直接手动编写SpringBoot启动类创建一个即可,内容类似到原生Java。因为添加了plugin.spring,所以不需要添加open关键字。<斯特林g>){runApplication(*args)}2.3写Controller,可以看到controller和Java基本是这样写的@RestControllerclassHelloController{dataclassKotlinInfo(valname:String,valdesc:String)@GetMapping("/getKotlin")fungetKotlinSpringBoot():KotlinInfo{returnKotlinInfo("kotlin","kotlinspringboot")}}2.4配置application.yaml,在resourcesserver:port:88992.5testinterface/getKotlin下创建application.yaml文件可以看到数据已经成功返回。3.集成JPA我们来看看如何集成JPA3.1。引入jpa插件。该插件的作用是为@Entity等JPA实体添加无参构造方法。下面是spring官网对这个插件的说明为了能够在JPA中使用Kotlin的非空属性,还启用了KotlinJPA插件。它为任何用@Entity、@MappedSuperclass或@Embeddable注解的类生成无参数构造函数。//引入jpa插件kotlin("plugin.jpa")version"1.6.21"3.2引入jpa和mysqljpa的版本由依赖管理插件//IntroduceJPAimplementation("org.springframework.boot:spring-boot-starter-data-jpa")//引入Mysqlimplementation("mysql:mysql-connector-java:8.0.30")3.3application.yaml数据库配置spring:datasource:driver-class-name:com.mysql。cj.jdbc.Driverurl:jdbc:mysql://localhost:3306/kotlinweb?serverTimezone=UTC&useUnicode=true&characterEncoding=utf8&useSSL=false用户名:root密码:root1234563.4写一个Entity,注意()定义的属性构造方法,这是kotlin包kotlinspringbootdemo.entityimportjavax.persistence.*/***Createdon2022/12/1721:28.*@authorJohnny*/@Entity@Table(name="student")classStudentInfo(@Id@GeneratedValue(strategy=GenerationType.IDENTITY)valid:Long=0,@Column(name="name")valname:String,@Column(name="email")valemail:String,@Column(name="address")valaddress:String)3.5创建学生表SETNAMESutf8mb4;SETFOREIGN_KEY_CHECKS=0;-------------------------------表str学生的结构--------------------------如果存在`student`,则删除表;CREATETABLE`student`(`id`bigintNOTNULLAUTO_INCREMENT,`name`varchar(255)DEFAULTNULL,`email`varchar(255)DEFAULTNULL,`address`varchar(255)DEFAULTNULL,PRIMARYKEY(`id`))ENGINE=InnoDBAUTO_INCREMENT=2DEFAULTCHARSET=utf8mb4COLLATE=utf8mb4_0900_ai_ci;SETFOREIGN_KEY_CHECKS=1;3.6写Repositoryjpa需要定义repository这个是jpa的知识范围就不多介绍了/***@authorJohnny*/@RepositoryinterfaceStudentRepository:JpaRepository{}3.7AddAninterfacetest和lateinit注解注入的属性延迟初始化没有区别,其他和Java中使用的一样@RestControllerclassHelloController{//注意lateinit延迟初始化@AutowiredlateinitvarstudentRepository:StudentRepository@GetMapping("/add")funaddStudent():StudentInfo{valstudentInfo=StudentInfo(name="johnny",email="626242589@qq.com",address="江苏无锡")studentRepository.save(学生tInfo)returnstudentInfo}}总结本文主要介绍kotlinspringboot和jpa的环境搭建和基本使用。可以看到basic的和java的没有区别。主要是搞清楚插件。Kotlinspringjpabootdependency-manager等是做什么用的?//用法1:该插件用于给类添加open关键字(否则为final)。仅限于@Controller@Service..etc.kotlin("plugin.spring")version"1.6.21"//Usage2id("org.jetbrains.kotlin.plugin.allopen")等spring的一些注解version"1.6.21"allOpen{//添加需要注解的类openannotation("org.springframework.boot.autoconfigure.SpringBootApplication")annotation("org.springframework.web.bind.annotation.RestController")}//用法三id("org.jetbrains.kotlin.plugin.allopen")version"1.6.21"apply{plugin("kotlin-spring")}//详见:https://kotlinlang.org/docs/all-open-plugin.html#spring-support欢迎大家访问个人博客Johnnycottage欢迎关注个人公众号