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

我们如何将Micronaut bean公开到一个Expesting Spring应用程序中

韩智明
2023-03-14

我们如何做Spring app到Micronaut的增量迁移?我正在寻找迁移Spring的豆子到微型机器人。我试图从一个跟随文档的Spring应用程序中使用一个Micronaut bean,但它并不适合

我的示例测试:https://github.com/luistrigueiros/micronaut-expose-spring-beans/blob/master/src/test/groovy/example/consumebeanspec.groovy

import groovy.util.logging.Slf4j
import org.springframework.test.context.ContextConfiguration
import spock.lang.Specification

import javax.inject.Inject

@Slf4j
@ContextConfiguration(classes = [Config])
class ConsumeBeanSpec extends Specification {
    @Inject
    ConsumerBean consumerBean

    def "should be able to do something"(){
        expect:
            consumerBean.doSomething()
    }

}

当前堆栈跟踪错误:...省略了36个公共帧,原因是:org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“Example.ExposedBean”类型的合格bean可用:至少需要一个合格的自动候选bean。依赖项批注:{}在org.springframework.beans.factor.support.defaultlistablebeanfactor.raisenomatchingbeanfound(defaultlistablebeanfactor.java:1509)在org.springframework.beans.factor.support.defaultlistablebeanfactor.doResolveDependency(defaultlistablebeanfactor.1104)在

java.lang.IllegalStateException:无法加载ApplicationContext

at org.springframework.test.context.cache.DefaultCacheAwareContextLoaderDelegate.loadContext(DefaultCacheAwareContextLoaderDelegate.java:125)
at org.springframework.test.context.support.DefaultTestContext.getApplicationContext(DefaultTestContext.java:108)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.injectDependencies(DependencyInjectionTestExecutionListener.java:117)
at org.springframework.test.context.support.DependencyInjectionTestExecutionListener.prepareTestInstance(DependencyInjectionTestExecutionListener.java:83)
at org.springframework.test.context.TestContextManager.prepareTestInstance(TestContextManager.java:246)
at org.spockframework.spring.SpringTestContextManager.prepareTestInstance(SpringTestContextManager.java:49)
at org.spockframework.spring.SpringInterceptor.interceptSetupMethod(SpringInterceptor.java:42)
at org.spockframework.runtime.extension.AbstractMethodInterceptor.intercept(AbstractMethodInterceptor.java:28)
at org.spockframework.runtime.extension.MethodInvocation.proceed(MethodInvocation.java:87)
at org.junit.runner.JUnitCore.run(JUnitCore.java:137)
at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68)
at com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47)
at com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70)

原因:org.springframework.beans.factory.unsatisfieddependencyexception:创建文件[C:\tools\micronaut.io\studio\micronaut-exposite-spring-beans\out\production\classes\example\consumerbean]中定义的名为“consumer bean”的bean时出错:通过构造函数参数0表示的依赖项不满足;嵌套异常为org.springframework.beans.factory.NoSuchBeanDefinitionException:没有“Example.ExposedBean”类型的合格bean可用:应至少有一个合格的自动候选bean。依赖项批注:{}在org.springframework.beans.factor.support.constructorresolver.createargumentarray(constructorresolver.java:729)在org.springframework.beans.factor.support.constructor.autorireconstructor(constructorresolver.java:192)在

共有1个答案

全流觞
2023-03-14

我已经发送了一个PR到https://github.com/luistrigueiros/micronaut-expose-spring-beans/pull/1,它允许您的测试通过。

作为https://docs.micronaut.io/1.0.0.m1/api/io/micronaut/spring/beans/micronautBeanProcessor.html中的javadocs,micronautBeanProcessor只处理单个bean。

这是在https://github.com/micronaut-projects/micronaut-core/blob/0108642b11d0c6d7f11bcffc85b357e823c98d42/spring/src/main/java/io/micronaut/spring/beans/micronautbeanprocessor.java#l109上实现的。

javadoc很清楚这一点。我们将在用户指南中对此进行一些澄清。

 类似资料:
  • 我正在尝试对接一个质子原生的应用程序,买我不能够看到基本的proyect 这是我的Dockerfile 然后我就跑 而且 假设这是可能的,请查看GUI,而不仅仅是访问docker映像。完成配置的正确方法是什么? 谢谢阅读!:)

  • 问题内容: 在我可以公开服务。这可以。 可以说我有1个Web实例和10个Java服务器实例。 我有一个Windows网关,用于通过安装在其上的jconsole访问这10个Java服务器实例。 显然,我没有通过kubernetes服务公开所有应用程序的jmx端口。 我在这里有什么选择?我应该如何允许外部到kubernetes群集Windows网关访问这10个服务器的jmx端口?这里有什么做法吗? 问

  • 我想在我的应用程序中添加带有,但一旦我将插件添加到我的应用程序中。yaml,我的应用程序不再运行。下面是错误 失败:生成失败,出现异常。 > 错误:任务执行失败:app:transformDexArchiveWithExternalLibsDexMergerForDebug'。 通用域名格式。Android建设者德兴。DexArchiveMergerException:合并dex存档时出错:/Us

  • 问题内容: 我确信你们中有人注意到,如果您有Acrobat Reader(或其他PDF阅读器),并在Firefox中打开一个PDF,您会看到它嵌入在您的标签中。有什么方法可以将应用程序嵌入JFrame中? 问题答案: 这是一个相当棘手的问题。通常,诸如Adobe Reader之类的本机应用程序不提供可以嵌入到swing应用程序中的组件。但是在Windows中,有COM / OLE方法可以将应用程序

  • 我正在开发一个Android应用程序,我正在使用了解我的应用程序的安装来源。为此,我使用了firstInstall\u referer intent filter和一个我自己定制的过滤器。 是否有可能有两个广播接收器条目带有意图过滤器? 谷歌分析接收器 我的自定义广播接收器。

  • 一旦我们在android 10后台收到FCM推送通知消息,启动活动就受到限制。当我们在另一个应用程序中时,需要像WhatsApp和Skype通知来电这样的解决方案。 任何帮助都将不胜感激。 下面是前台服务和时间敏感通知的代码。 startForeground(1234,getNotification(IncomingCallContent));