当前位置: 首页 > 知识库问答 >
问题:

如何在SpringBoot和SpringWebFlux中使用“函数bean定义Kotlin DSL”?

沙富
2023-03-14

https://github.com/spring-projects/spring-framework/blob/master/spring-context/src/main/kotlin/org/springframework/context/support/BeanDefinitionDsl.kt该注释显示了如何通过新的“函数bean定义Kotlin DSL”定义SpringBean。我还发现https://github.com/sdeleuze/spring-kotlin-functional.然而,这个例子只使用普通的Spring,而不是Spring Boot。任何关于如何将DSL与Spring Boot结合使用的提示都将不胜感激。

共有3个答案

左丘曦
2023-03-14

您可以在*Config中定义bean。kt文件并实现ApplicationContextInitializer接口的初始化方法。

override fun initialize(applicationContext: GenericApplicationContext) {
    ....
}

这里有一些bean定义。

bean<XServiceImpl>("xService")

bean("beanName") {
        BeanConstructor(ref("refBeanName"))
}
吴胜
2023-03-14

在Spring Boot中执行此操作的另一种方法是:

fun main(args: Array<String>) {
    runApplication<DemoApplication>(*args) {
        addInitializers(
                beans {
                    // Define your bean with Kotlin DSL here
                }
        )
    }
}
夹谷鸿福
2023-03-14

Spring Boot基于Java配置,但应允许通过ApplicationContextInitializer支持,实验性地支持用户定义的函数bean声明DSL,如下所述。

实际上,您应该能够在bean中声明您的bean。kt包含beans()函数的文件。

fun beans() = beans {
    // Define your bean with Kotlin DSL here
}

然后,为了使Boot在运行main()测试时考虑到它,创建一个Application ationContext初始器类如下:

class BeansInitializer : ApplicationContextInitializer<GenericApplicationContext> {

    override fun initialize(context: GenericApplicationContext) =
        beans().initialize(context)

}

最后,在应用程序中声明此初始值设定项。属性文件:

context.initializer.classes=com.example.BeansInitializer  

您将在这里找到一个完整的示例,并且还可以关注这个关于功能bean注册的专用Spring Boot支持的问题。

 类似资料:
  • 我知道如何在SparkSQL中编写UDF: 我可以做类似的事情来定义聚合函数吗?这是怎么做到的? 对于上下文,我想运行以下SQL查询: 它应该会返回类似于 我希望聚合函数告诉我,在由< code>span和< code>timestamp定义的组中,是否有任何< code>opticalReceivePower的值低于阈值。我需要把我的UDAF写得和我上面粘贴的UDF不同吗?

  • 本文向大家介绍如何在Oracle中使用WITH子句定义函数?,包括了如何在Oracle中使用WITH子句定义函数?的使用技巧和注意事项,需要的朋友参考一下 问题: 您想使用WITH子句在Oracle中定义一个函数。 解 从Oracle Database 12.1开始,您可以在出现SELECT语句的同一SQL语句中定义函数和过程。通过允许两个步骤都在SQL引擎中进行,从而允许在PL / SQL和SQ

  • 我是Spring Jpa和Hibernate的新手。我试图使用一个定制函数从Oracle数据库中获取数据。我可以定义一个实体及其相关的服务、实现和存储库。此外,我通过使用< code>registerFunction创建了一个新的定制Oracle方言,如下所示。 所以我有两个问题: 1)在我的Oracle数据库中,函数位于不同的模式下。我需要指定它的模式吗?如果是的话怎么做?还是hibernate

  • 问题内容: 我在数据库中创建了标量函数 现在,我想在.NET C#或VB.NET代码中运行它。 我使用实体框架,尝试使用功能映射对其进行映射,但未成功。我不在乎用简单的DbCommand来做到这一点,问题是我没有得到任何结果(该函数存在于Entities类中): 有什么解决办法吗?欢迎使用C#或VB.NET发布。 问题答案: 在这种情况下,听起来 正确的 方法是使用实​​体框架的功能来定义.NET

  • 问题内容: 我正在使用定义应用程序中的阶段。配置为将必要的类(此处称为Configurator)与阶段一起注入。 现在,我需要另一个名为的类的阶段列表。在不提供访问其阶段的名单。 我不能改变班级。 我的想法: 定义一个名为Stages的新bean,并将其注入到和中。我的想法是,我不知道如何转换此属性: into a bean. 这样的事情不起作用: 有人可以帮我吗? 问题答案: 导入spring

  • 问题内容: 我正在使用Spring定义应用程序中的阶段。配置为将必要的类(此处称为Configurator)与阶段一起注入。 现在,我需要另一个名为的类的阶段列表LoginBean。在Configurator不提供访问其阶段的名单。 我不能改变班级。 我的想法: 定义一个名为的新,并将其注入到和中。我的想法是,我不知道如何转换此属性: 变成豆 这样的事情不起作用: 有人可以帮我吗? 问题答案: 导