《Springboot极简教程》 Springboot plus Kotlin :Hello,World

来源:互联网 发布:淘宝鞋店排行榜 编辑:程序博客网 时间:2024/05/18 11:35

我们的理念是用极简的招数,打败绝顶"高手"。

Kotlin, Console: Hello,World

Step1. 新建gradle,kotlin工程:

螢幕快照 2017-03-11 12.40.05.png

Step2. 配置build.gradle
group 'com.jason.chen.mini_springboot'version '1.0-SNAPSHOT'buildscript {    ext.kotlin_version = '1.1.0'    repositories {        mavenCentral()    }    dependencies {        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"    }}apply plugin: 'kotlin'apply plugin: 'application'mainClassName = 'jason.chen.mini_springboot.HelloWorldKt'defaultTasks 'run'repositories {    mavenCentral()}dependencies {    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"}

Step3.写HelloWorld Kotlin class
package jason.chen.mini_springboot/** * Created by jack on 2017/3/11. * @author jack * @date 2017/03/11 */fun helloWorld():String {    val words = mutableListOf<String>()    words.add("Hello")    words.add("World!")    return words.joinToString(separator=" ")}fun main(args: Array<String>){    println(helloWorld())}

Step4. Run

螢幕快照 2017-03-11 12.57.23.png

源码:

https://github.com/MiniSpringBootTutorial/mini_springboot/blob/master/src/main/kotlin/jason/chen/mini_springboot/console/HelloWorld.kt

SpringBoot Kotlin JPA Myql, RestAPI : Hello,World

Step1.配置build.gradle
version = "0.0.1-SNAPSHOT"buildscript {    ext{        springBootVersion = "1.5.2.RELEASE"        kotlinVersion = "1.1.0"    }    repositories {        mavenCentral()    }    dependencies {        classpath("org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion")        classpath("org.jetbrains.kotlin:kotlin-noarg:$kotlinVersion")        classpath("org.jetbrains.kotlin:kotlin-allopen:$kotlinVersion")        classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")    }}apply {    plugin("kotlin")    plugin("kotlin-spring")    plugin("kotlin-jpa")    plugin("org.springframework.boot")    plugin 'java'    plugin 'eclipse'    plugin 'idea'//    plugin: 'spring-boot'}repositories {    mavenCentral()}jar {    baseName = 'mini_springboot'    version = '0.0.1'}sourceCompatibility = 1.8targetCompatibility = 1.8dependencies {    compile("org.springframework.boot:spring-boot-starter-data-jpa")//    compile("com.h2database:h2")    compile("org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion")    compile("org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion")    compile("com.fasterxml.jackson.module:jackson-module-kotlin:2.8.4")    testCompile("org.springframework.boot:spring-boot-starter-test")    compile("org.springframework.boot:spring-boot-starter-web") {        exclude module: "spring-boot-starter-tomcat"    }    compile("org.springframework.boot:spring-boot-starter-jetty")    compile("org.springframework.boot:spring-boot-starter-actuator")    compile('mysql:mysql-connector-java:5.1.13')    testCompile("junit:junit")}

Step2. 配置application.properties
spring.datasource.url = jdbc:mysql://localhost:3306/mini_springbootspring.datasource.username = rootspring.datasource.password = root#spring.datasource.driverClassName = com.mysql.jdbc.Driver# Specify the DBMSspring.jpa.database = MYSQL# Keep the connection alive if idle for a long time (needed in production)spring.datasource.testWhileIdle = truespring.datasource.validationQuery = SELECT 1# Show or not log for each sql queryspring.jpa.show-sql = true# Hibernate ddl auto (create, create-drop, update)spring.jpa.hibernate.ddl-auto = update# Naming strategyspring.jpa.hibernate.naming-strategy = org.hibernate.cfg.ImprovedNamingStrategy# Use spring.jpa.properties.* for Hibernate native properties (the prefix is# stripped before adding them to the entity manager)# The SQL dialect makes Hibernate generate better SQL for the chosen databasespring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL5Dialectserver.port=9891

Step3.工程架构

记住,就连UNIX这样的操作系统,“一切都是文件”。so, 你的所有的代码,工程,一切都是文件。

目录

.├── README_.md├── build│   ├── classes│   │   └── main│   │       ├── META-INF│   │       │   └── mini_springboot_main.kotlin_module│   │       └── jason│   │           └── chen│   │               └── mini_springboot│   │                   ├── console│   │                   │   └── HelloWorldKt.class│   │                   ├── rest│   │                   │   ├── biz│   │                   │   ├── controller│   │                   │   └── entity│   │                   └── restful│   │                       ├── Application$init$1.class│   │                       ├── Application.class│   │                       ├── ApplicationKt.class│   │                       ├── biz│   │                       │   └── CustomerRepository.class│   │                       ├── controller│   │                       │   └── CustomerController.class│   │                       ├── entity│   │                       │   └── Customer.class│   │                       └── utils│   │                           ├── DateOperator.class│   │                           ├── DateOptUnit$WhenMappings.class│   │                           ├── DateOptUnit.class│   │                           └── DateUtilsKt.class│   ├── kotlin│   │   ├── compileKotlin│   │   │   └── sync│   │   │       └── kotlin-files-in-java-timestamps.bin│   │   └── daemon-is-alive│   ├── kotlin-build│   │   └── caches│   │       └── version.txt│   ├── kotlin-classes│   │   └── main│   │       ├── META-INF│   │       │   └── mini_springboot_main.kotlin_module│   │       └── jason│   │           └── chen│   │               └── mini_springboot│   │                   ├── console│   │                   │   └── HelloWorldKt.class│   │                   └── restful│   │                       ├── Application$init$1.class│   │                       ├── Application.class│   │                       ├── ApplicationKt.class│   │                       ├── biz│   │                       │   └── CustomerRepository.class│   │                       ├── controller│   │                       │   └── CustomerController.class│   │                       ├── entity│   │                       │   └── Customer.class│   │                       └── utils│   │                           ├── DateOperator.class│   │                           ├── DateOptUnit$WhenMappings.class│   │                           ├── DateOptUnit.class│   │                           └── DateUtilsKt.class│   └── resources│       └── main│           ├── application.properties│           └── application.yml├── build.gradle├── gradle│   └── wrapper│       ├── gradle-wrapper.jar│       └── gradle-wrapper.properties├── gradlew├── gradlew.bat├── run.bat├── run.sh├── settings.gradle└── src    ├── main    │   ├── java    │   ├── kotlin    │   │   └── jason    │   │       └── chen    │   │           └── mini_springboot    │   │               ├── console    │   │               │   └── HelloWorld.kt    │   │               └── restful    │   │                   ├── Application.kt    │   │                   ├── biz    │   │                   │   └── CustomerRepository.kt    │   │                   ├── controller    │   │                   │   └── CustomerController.kt    │   │                   ├── entity    │   │                   │   └── Customer.kt    │   │                   └── utils    │   │                       └── DateUtils.kt    │   └── resources    │       ├── application.properties    │       └── application.yml    └── test        ├── java        ├── kotlin        └── resources56 directories, 46 files

一切尽在不言中,静静地看工程文件结构。

Step4.测试

请求:http://127.0.0.1:9891
响应:

curl http://127.0.0.1:9891[{"firstName":"Jason","lastName":"Chen","gmtCreated":null,"gmtModified":null,"deletedDate":null,"id":1},{"firstName":"Bluce","lastName":"Li","gmtCreated":null,"gmtModified":null,"deletedDate":null,"id":2},{"firstName":"Michelle","lastName":"Chen","gmtCreated":null,"gmtModified":null,"deletedDate":null,"id":3},{"firstName":"Jason","lastName":"Chen","gmtCreated":1489214640000,"gmtModified":1489214640000,"deletedDate":1489214640000,"id":4},{"firstName":"Bluce","lastName":"Li","gmtCreated":1489214640000,"gmtModified":1489214640000,"deletedDate":1489214640000,"id":5},{"firstName":"Michelle","lastName":"Chen","gmtCreated":1489214640000,"gmtModified":1489214640000,"deletedDate":1489214640000,"id":6}]curl http://127.0.0.1:9891/Chen[{"firstName":"Jason","lastName":"Chen","gmtCreated":null,"gmtModified":null,"deletedDate":null,"id":1},{"firstName":"Michelle","lastName":"Chen","gmtCreated":null,"gmtModified":null,"deletedDate":null,"id":3},{"firstName":"Jason","lastName":"Chen","gmtCreated":1489214640000,"gmtModified":1489214640000,"deletedDate":1489214640000,"id":4},{"firstName":"Michelle","lastName":"Chen","gmtCreated":1489214640000,"gmtModified":1489214640000,"deletedDate":1489214640000,"id":6}]

源代码:

https://github.com/MiniSpringBootTutorial/mini_springboot

Spring家族大观园

访问,http://start.spring.io/ , 你将进入丰富多彩的Spring世界:


螢幕快照 2017-03-11 11.11.19.png

螢幕快照 2017-03-11 11.12.20.png

OK,言归正传,我们开篇第一回,Hello,World


螢幕快照 2017-03-11 11.56.45.png

在https://start.spring.io中生成项目骨架:

GroupId:  com.light.sword.mini_springbootArtifact:  mini_springboot

生成工程mini_springboot.

工程目录如下:

.├── build.gradle├── gradle│   └── wrapper│       ├── gradle-wrapper.jar│       └── gradle-wrapper.properties├── gradlew├── gradlew.bat└── src    ├── main    │   ├── java    │   │   └── com    │   │       └── light    │   │           └── sword    │   │               └── mini_springboot    │   │                   └── MiniSpringbootApplication.java    │   └── resources    │       └── application.properties    └── test        └── java            └── com                └── light                    └── sword                        └── mini_springboot                            └── MiniSpringbootApplicationTests.java16 directories, 8 files

参考示例工程:

https://github.com/sdeleuze/spring-boot-kotlin-demo

参考文章:

Developing Spring Boot applications with Kotlin:
https://spring.io/blog/2016/02/15/developing-spring-boot-applications-with-kotlin

阅读全文
1 0
原创粉丝点击