前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kotlin集成 SpringBoot 混合Java库开发

Kotlin集成 SpringBoot 混合Java库开发

作者头像
一个会写诗的程序员
发布2018-08-17 17:08:28
1K0
发布2018-08-17 17:08:28
举报

《Kotlin极简教程》正式上架:

点击这里 > 去京东商城购买阅读

点击这里 > 去天猫商城购买阅读

大家请多支持 !!


只是用这两个插件:

apply plugin: 'org.springframework.boot' apply plugin: 'kotlin'

完整配置:

代码语言:javascript
复制
buildscript {
    ext.kotlin_version = '1.1.2' // Required for Kotlin integration
    ext.spring_boot_version = '1.5.3.RELEASE'
    repositories {
        jcenter()
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" // Required for Kotlin integration
        classpath "org.springframework.boot:spring-boot-gradle-plugin:$spring_boot_version"
    }
}

apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'kotlin' // Required for Kotlin integration
apply plugin: 'org.springframework.boot'
apply plugin: 'application'

写出来的Kotlin调用Java的SpringBoot代码会比较丑:

代码语言:javascript
复制
package org.jetbrains.kotlin.demo

import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication

@SpringBootApplication
open class Application {
    companion object {
        @JvmStatic fun main(args: Array<String>) {
            SpringApplication.run(Application::class.java, *args)
        }
    }
}

每个类,函数上都得标个open。如果要使用Java默认无参构造函数的功能,就要加上

代码语言:javascript
复制
"org.jetbrains.kotlin:kotlin-noarg:$kotlin_version"

我们要写兼容Java的Kotlin代码,当然不会每个类都再手动写个无参构造函数。Kotlin的构造函数跟Java的语法上以及使用方式还是有些不同的。

使用下面的这个配置,代码写起来就自然许多了:

代码语言:javascript
复制
group 'com.easy.kotlin'
version '1.0-SNAPSHOT'

buildscript {
    ext.kotlin_version = '1.1.2-2'
    ext.springboot_version = '1.5.2.RELEASE'

    repositories {
        mavenCentral()
    }
    dependencies {
//        Kotlin Gradle插件
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
//        SpringBoot Gradle插件
        classpath("org.springframework.boot:spring-boot-gradle-plugin:$springboot_version")

//        Kotlin整合SpringBoot的默认无参构造函数,默认把所有的类设置open类插件
        classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlin_version")
        classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlin_version")
    }
}

apply plugin: 'java'
apply plugin: 'kotlin'

//Kotlin整合SpringBoot需要的spring,jpa,org.springframework.boot插件
apply plugin: 'kotlin-spring'
apply plugin: 'kotlin-jpa'
apply plugin: 'org.springframework.boot'

sourceCompatibility = 1.8
targetCompatibility = 1.8

repositories {
    mavenCentral()
}

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')

}

代码就可以这样写了:

代码语言:javascript
复制
package com.easy.kotlin

import com.easy.kotlin.entity.People
import com.easy.kotlin.service.PeopleService
import org.slf4j.LoggerFactory
import org.springframework.boot.CommandLineRunner
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
import org.springframework.context.annotation.Bean
import java.util.*

/**
 * Created by jack on 2017/6/7.
 */


@SpringBootApplication
class Application {

    private val log = LoggerFactory.getLogger(Application::class.java)

    @Bean
    fun init(repository: PeopleService) = CommandLineRunner {
        val now = Date();
        repository.save(People(null, "Jason", "Chen", "Male", 28, now, now))
        repository.save(People(null, "Bluce", "Li", "Male", 32, now, now))
        repository.save(People(null, "Corey", "Chen", "Female", 20, now, now))

        for (people in repository.findAll()!!) {
            log.info(people.toString())
        }

        val customer = repository.findOne(1L)
        log.info(customer.toString())
        for (chen in repository.findByLastName("Chen")!!) {
            log.info(chen.toString())
        }
    }

}

fun main(args: Array<String>) {
    SpringApplication.run(Application::class.java, *args)
}

示例工程源码:

https://github.com/EasyKotlin/easy_kotlin_chapter2_hello_world_springboot_restful

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017.06.07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 《Kotlin极简教程》正式上架:
    • 大家请多支持 !!
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档