zoukankan      html  css  js  c++  java
  • 创建基于kotlin开发环境的spring项目入门

    kotlin是idea所属公司开发的一门jvm语言,如果你不了解估计也不会看这里,所以我就不多说了。

    这里简单说一下如何新建一个小的kotlin spring项目。kotlin和idea是一家公司,所以Idea天然是支持kotlin语言的,现在spring也完全支持了kotlin。

    新建项目,类型是spring
    https://images.cnblogs.com/cnblogs_com/somefuture/1863121/o_210226013327si.png

    在下一步选择kotlin语言
    https://images.cnblogs.com/cnblogs_com/somefuture/1863121/o_210226013334np.png

    后面选择需要依赖的spirng组件。我们是来玩的,选个web+jpa就够了。


    搭建好以后结构和Java maven一样,源码也是src/main/kotlin。里面有一个kt文件,就是kotlin的源文件。

    为啥是一个显示后缀名kt的文件呢?如果你自己创建kotlin类或接口,后缀kt在idea中是不显示的,图标也不一样。这里是kotlin特色,这个文件里除了定义了一个被SpringBootApplication标注的类以外还有main函数,所以不是类文件。

    现在已经可以运行main函数了,启动过程和Java工程一样。


    正常对于kotlin来讲,类要被代理,必须是open的(open class才能被继承,否则默认是final的。你可以给主类加上final看一下,spring会报错)。这里没有加open关键字是因为我们使用了kotlin-maven-plugin插件。你可以在pom.xml中找一下。

    接下来我们提供一个mvc端口,定义controller:

    @RestController
    class MessageResource() {
        @GetMapping("a", "b")
        fun index(): String = "hello world!"
    }
    

    方法的返回类型可以不写。再启动程序,访问http://localhost:8080/a,浏览器上就是hello world!


    现在我们加上数据库的访问。定义一个data class(和Java新的Record类似,相等于lombok的@Data,会自动包含getter/setter等方法):

    @Table("messages")
    data class Message(@Id val id: String?, val text: String)
    

    这个类有两个属性,定义在后面的括号里。第一个的类型后面还有问号,说明可以为空。按照这个格式去创建一个表:

    CREATE TABLE  messages (
      id                     varchar(60) not null  DEFAULT '' PRIMARY KEY,
      text                   VARCHAR(60)      NOT NULL
    );
    INSERT INTO messages VALUES ('1', 'text'),('2', 'ttt');
    

    pom中增加mysql依赖,比如

            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.49</version>
            </dependency>
    

    application.properties中增加数据源:

    spring.datasource.driverClassName =com.mysql.jdbc.Driver
    spring.datasource.url = jdbc:mysql://127.0.0.1:3306/jfinal?useUnicode=true&characterEncoding=utf-8&serverTimezone=GMT%2B8&useSSL=false
    spring.datasource.username = root
    spring.datasource.password = 123456
    

    增加jpa repo:

    interface MessageRepository : CrudRepository<Message, String> {
    
        @Query("select * from messages")
        fun findMessage(): List<Message>
    }
    
    @Service
    class MessageService(val db: MessageRepository) {
        fun findMessages(): List<Message> = db.findMessage()
    
        fun post(message: Message) {
            db.save(message)
        }
    }
    

    改造controller:

    @RestController
    class MessageResource(val service: MessageService) {
        @GetMapping("a", "b")
        fun index(): List<Message> = service.findMessages()
    
        @PostMapping
        fun post(@RequestBody message: Message) {
            service.post(message)
        }
    }
    

    现在你可以测试一下这两个接口了。

    注意jpa的save方法是对象没有Id就新增,有id就更新

  • 相关阅读:
    flink 读取kafka 数据,partition分配
    Flink 报错 "Could not find a suitable table factory for 'org.apache.flink.table.factories.StreamTableSourceFactory' in the classpath"
    flume接收http请求,并将数据写到kafka
    【翻译】Flume 1.8.0 User Guide(用户指南) Processors
    【翻译】Flume 1.8.0 User Guide(用户指南) Channel
    【翻译】Flume 1.8.0 User Guide(用户指南) Sink
    【翻译】Flume 1.8.0 User Guide(用户指南) source
    【翻译】Flume 1.8.0 User Guide(用户指南)
    Apache Flink 简单安装
    Java之使用IDE
  • 原文地址:https://www.cnblogs.com/somefuture/p/14450753.html
Copyright © 2011-2022 走看看