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

如何在micronaut中从外部库加载选定的bean

邢鸿博
2023-03-14

我习惯于创建自定义的基于Spring Boot的库,每个库中有许多不同的bean。然后,一个目标Spring Boot应用程序将使用@Import使这些bean的子集可用,并从外部库导入所有bean。外部库还包括spring集成测试(即@SpringBootTest)。

我试图在Micronaut中复制这个功能。我用io创建了一个外部库。微型机器人。库的gradle插件。它还包含一些micronaut集成测试(即@MicronautTest)。

每https://docs.micronaut.io/latest/guide/#beanImport我以为默认情况下不会导入任何bean。然而,我注意到默认情况下导入了一个用@Singleton注释的类。我怀疑这是因为它包含在META-INF/services/io中。微型机器人。注射BeanDefinitionReference在库jar中。如果我删除META-INF/services/io。微型机器人。注射BeanDefinitionReference从jar手动导入,然后默认情况下不会导入任何bean,我可以使用explicit@Import导入所需内容。

这个库的包是com。一些微型机器人。http而应用程序包是com。一些因此名称空间不匹配。库和应用程序都是用Kotlin编写的。

有没有办法控制从外部库导入哪些bean?或者我可以控制META-INF/services/io中包含哪些bean引用。微型机器人。注射Bean定义参考

下面是一个相关的构建。gradle外部库中的部分:

plugins {
    id("org.jetbrains.kotlin.jvm") version "${kotlinVersion}"
    id("org.jetbrains.kotlin.kapt") version "${kotlinVersion}"
    id("org.jetbrains.kotlin.plugin.allopen") version "${kotlinVersion}"
    id 'io.micronaut.library' version "3.1.1"
}

dependencies {
    implementation("io.micronaut:micronaut-http-client")
    implementation("io.micronaut:micronaut-jackson-databind")

    //test
    testImplementation 'io.micronaut.test:micronaut-test-junit5'
    testImplementation 'org.junit.jupiter:junit-jupiter-params'

    //wiremock for http client tests
    testImplementation 'com.github.tomakehurst:wiremock-jre8:2.32.0'
}

我对io的使用很灵活。微型机器人。库插件,但作为库构建的一部分,我确实需要能够运行@MicronautTest


共有1个答案

段干宜
2023-03-14

现在,我已经删除了META-INF/services/io。微型机器人。注射BeanDefinitionReference在我的构建中显式地从库jar中删除。格雷德尔:

jar {
    exclude('META-INF/services/io.micronaut.inject.BeanDefinitionReference')
}

然后在我的应用程序中使用@Import,显式导入所需的组件。我还提交了一个增强请求。

 类似资料:
  • 本文向大家介绍在SAP UI5中加载外部库,包括了在SAP UI5中加载外部库的使用技巧和注意事项,需要的朋友参考一下 可以使用普通脚本标签中的文件插入外部库。SAP UI5还支持JQuery,因此可以通过扩展控制器的标题来完成。 您还可以使用以下命令添加任何外部文件- 您可以导航到以下路径以了解更多详细信息- https://blogs.sap.com/2016/04/22/include-ex

  • 问题内容: 我的问题是该网页未加载到webview中。 启动网络浏览器… 这是我的活动代码: 我在清单中添加了所需的权限: 问题答案: 由于这篇文章,我终于找到了解决方案。这是代码:

  • 在NetBeans 8.2中,我如何正确地向库中添加外部.jar? 我正在做一个使用.jsp文件制作的web应用程序,运行在Tomcat服务器上(到目前为止是本地的)。我使用的是Maven,我想我对所有的第三方JAR都有问题,因为我也尝试添加JSON库,但也不起作用。我还尝试通过工具->Libraries->Add jar/folder等添加这些库,NetBeans显示它们已添加,但在我的Java

  • 我尝试了以下文章中描述的步骤 或者和这篇GitHub帖子一样 这对我不起作用。 我也读到这种方法:看这里,但这不是我在寻找的 我如何定制我的库,使Micronaut能够直接在我的项目中创建和注入它的bean?

  • 我正在做一个基于前端模板的项目。 我如何添加其他jQuery插件以类似jQuery的方式工作?(当输入使用$时自动包括在内) 我公开jQuery的方法是创建ProvidePleugin:

  • 如果一个bean类来自外部库(例如我自己的commons库),我如何使用ConfigurationProperties填充该bean? 示例:来自公共库: 实施项目: application.properties(也仅限于实施项目): 结果: 由于验证异常,应用程序启动失败。o、 s.b.b.PropertiesConfigurationFactory:对象公用空间中的字段错误。字段“name”上