Spring Fu is an incubator for ne

作者: 光剑书架上的书 | 来源:发表于2018-11-05 23:55 被阅读25次

    Spring Fu

    Spring Fu is an incubator for new Spring features about Kotlin and functional bean registration. It introduces Kofu and Jafu configuration for configuring Spring Boot in a functional way, Coroutines support, GraalVM native images support and various other features.

    Spring Fu is an incubator for new Spring features about Kotlin and functional bean registration. Its main feature is an alternative way of configuring Spring Boot applications with Kotlin DSL and lambdas instead of annotations: Kofu (for Kotlin and functional) configuration. Other features like Coroutines or GraalVM support are also included.

    A Java variant called Jafu (for Java and functional) is also available (just a POC for now).

    It is not intended to be used in production, but rather to incubate and get feedback and contributions from the community in order to reach a point where its features can be integrated as part of existing Spring projects like Framework, Boot and Data. The table bellow summarize the status of current features.

    Getting started

    https://spring.io/blog/2018/10/02/the-evolution-of-spring-fu

    Via start.spring.io

    • Create a Spring 2.1.x.RELEASE project on start.spring.io,

    • Add the org.springframework.fu:spring-fu-kofu:0.0.3.BUILD-SNAPSHOT dependency

    • Use Kotlin 1.3.0

    • Modify the generated *Application.kt file as following:

    package com.example
    
    import org.springframework.fu.kofu.application
    
    val app = application {
        // ...
    }
    
    fun main() = app.run()
    
    
    
    // 例如:
    val app = application {
      import(beans)
      listener<ApplicationReadyEvent> {
        ref<UserRepository>().init()
      }
      properties<SampleProperties>("sample")
      server {
        port = if (profiles.contains("test")) 8181 else 8080
        mustache()
        codecs {
          string()
          jackson {
            indentOutput = true
          }
        }
        import(::routes)
      }
      mongodb {
        embedded()
      }
    }
    
    val beans = beans {
      bean<UserRepository>()
      bean<UserHandler>()
    }
    
    fun routes(userHandler: UserHandler) = router {
      GET("/", userHandler::listView)
      GET("/api/user", userHandler::listApi)
      GET("/conf", userHandler::conf)
    }
    
    fun main() = app.run()
    

    Samples

    You can also have a look to the sample applications.

    Credits

    In addition to the whole Spring and Reactor teams, special credits to:


    Kotlin 开发者社区

    国内第一Kotlin 开发者社区公众号,主要分享、交流 Kotlin 编程语言、Spring Boot、Android、React.js/Node.js、函数式编程、编程思想等相关主题。

    开发者社区 QRCode.jpg

    相关文章

      网友评论

        本文标题:Spring Fu is an incubator for ne

        本文链接:https://www.haomeiwen.com/subject/uqxyxqtx.html