天天看點

嗯,用了一下Kotlin程式設計語言,真香!

嗯,用了一下Kotlin程式設計語言,真香!

據說Kotlin是一門有可能在未來幹掉Java的語言?嗯?這麼強嗎?

嗯,用了一下Kotlin程式設計語言,真香!

我得趕緊來試試!!!

 前   言 

Kotlin是一門最近非常流行的程式設計語言,而且和Groovy語言、Scala語言一樣同屬Java派系語言。Kotlin具有的很多靜态語言特性諸如:類型判斷、多範式、擴充函數、模式比對等等讓我無法隻作為一個吃瓜群衆了,是以稍微花了點時間了解了一下該語言,并想着用Kotlin來寫個什麼小Demo,這不就有了這篇文章嘛。

本文主要實踐一下如何使用Kotlin結合Spring Boot來開發一個帶有資料庫互動的REST風格的基本Web程式。

 實驗環境 

  • JDK不用說了,Kotlin畢竟是運作在JVM環境下的語言,是以JDK必須,我這裡用的JDK 1.8
  • 資料庫:MySQL
  • 資料庫通路元件:Spring Data Jpa
  • JavaEE架構:Spring Boot
  • 項目管理工具:Gradle

 工程建立+目錄結構 

沒啥好說的,我這裡建立的是基于Gradle的Kotlin工程:

嗯,用了一下Kotlin程式設計語言,真香!

建立完成後的基本工程目錄結構和普通Spring Boot的工程幾乎沒任何差別,給張圖示意一下好了:

嗯,用了一下Kotlin程式設計語言,真香!

好啦,接下來我們就來寫代碼完善這個工程即可

 添加Gradle依賴 

首先,我們需要在

build.gradle

中引入Kotlin、Spring Boot、MySQL、JPA等元件的依賴:

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib-jre8:$kotlin_version"
    testCompile group: 'junit', name: 'junit', version: '4.12'
    compile("org.springframework.boot:spring-boot-starter-web")
    testCompile("org.springframework.boot:spring-boot-starter-test")
    compile("org.springframework.boot:spring-boot-starter-data-jpa")
    compile('mysql:mysql-connector-java:5.1.13')
}      

除此之外,我們還需要引入一些特定的插件來友善我們寫Kotlin代碼

這裡我們配置兩個非常關鍵的插件依賴:

  • 無參( 

    no-arg

    )插件
  • 全開放( 

    allopen

  1. buildscript {

  2.    ......

  3.    dependencies {

  4.        // Kotlin Gradle插件

  5.        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

  6.        // SpringBoot Gradle插件

  7.        classpath("org.springframework.boot:spring-boot-gradle-plugin:$springboot_version")

  8.        // Kotlin整合Spring Boot的預設無參構造函數,預設把所有的類設定open類插件

  9.        classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlin_version") // 無參插件

  10.        classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version") // 全開放插件

  11.    }

  12.    ......

  13. }

 完善配置檔案 

接下來配置application.properties檔案,這裡面主要是跟MySQL資料庫相關的一些配置:

  1. spring.datasource.url = jdbc:mysql://localhost:3306/easykotlin

  2. spring.datasource.username = root

  3. spring.datasource.password = 你的MySQL密碼

  4. spring.datasource.driver-class-name=com.mysql.jdbc.Driver

  5. spring.jpa.database = MYSQL

  6. spring.datasource.testWhileIdle = true

  7. spring.datasource.validationQuery = SELECT 1

  8. spring.jpa.show-sql = true

  9. spring.jpa.hibernate.ddl-auto = update

  10. spring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy

  11. spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialect

  12. server.port=7000

 正式寫Kotlin代碼 

因為我們需要去資料庫中查詢東西,是以二話不說,寫個通路資料庫的标準代碼目錄結構:

  • controller
  • entity
  • repository
  • service
嗯,用了一下Kotlin程式設計語言,真香!

各部分代碼如下:(注意!以下業務代碼都是用Kotlin寫的!檔案字尾為.kt)

實體類:People.kt

@Entity
class People(
        @Id @GeneratedValue(strategy = GenerationType.AUTO)
        val id: Long?,
        val firstName: String?,
        val lastName: String?,
        val gender: String?,
        val age: Int?,
        val gmtCreated: Date,
        val gmtModified: Date
) {
    override fun toString(): String {
        return "firstName='$firstName', lastName='$lastName'"
    }
}      

資料庫操作類:PeopleRepository.kt

interface PeopleRepository : CrudRepository<People, Long> {
    fun findByLastName(lastName: String): List<People>?
}      

Service層代碼:PeopleService.kt

  1. @Service

  2. class PeopleService : PeopleRepository {

  3.    @Autowired

  4.    val peopleRepository: PeopleRepository? = null

  5.    override fun findByLastName(lastName: String): List<People>? {

  6.        return peopleRepository?.findByLastName(lastName)

  7.    }

  8. }

Controller層代碼:PeopleController.kt

  1. @Controller

  2. class PeopleController {

  3.    @Autowired

  4.    val peopleService: PeopleService? = null

  5.    @GetMapping(value = "/hello")

  6.    @ResponseBody

  7.    fun hello(@RequestParam(value = "lastName") lastName: String): Any {

  8.        val peoples = peopleService?.findByLastName(lastName)

  9.        val map = HashMap<Any, Any>()

  10.        map.put("hello", peoples!!)

  11.        return map

  12.    }

  13. }

看到沒,Kotlin代碼非常簡潔!而且如果有Java語言的基礎,你會發現基本不需要深入學習,就可以快速上手Kotlin語言,不需什麼學習成本!

 接口測試 

首先需要去MySQL中建好資料庫,并插入一些資料:

嗯,用了一下Kotlin程式設計語言,真香!

然後啟動工程,通路:http://localhost:7000/hello?lastName=wang

可以看到資料被成功取回:

嗯,用了一下Kotlin程式設計語言,真香!

可以可以,Kotlin真香!

我正在考慮以後寫Java項目是不是都換成Kotlin來寫了 . . . 也太友善了!

後   記

若有錯誤或者不當之處,可在本公衆号内回報,一起學習交流!

更多熱文在此:

  ●  Spring Boot 系列實戰文章合集(源碼已開源)

  ●  程式員寫履歷時必須注意的技術詞彙拼寫

  ●  前後端都分離了,該搞個好用的API管理系統了!

  ●  從一份配置清單詳解Nginx伺服器配置

  ●  如何在Windows下像Mac一樣優雅的開發

  ●  Docker容器可視化監控中心搭建

  ●  利用ELK搭建Docker容器化應用日志中心

  ●  真實IT領域2/8法則,紮心了!

  ●  一文詳解 Linux系統常用監控工具