Как мы можем представить бобы Micronaut в отличном приложении Spring - PullRequest
0 голосов
/ 12 июня 2018

Как мы можем сделать постепенную миграцию приложения Spring в Micronaut?Я ищу, чтобы перенести Spring Beans в Micronaut.Я пытался использовать бин Micronaut из приложения Spring, следуя документам, но он не работает

Мой пример теста: https://github.com/luistrigueiros/micronaut-expose-spring-beans/blob/master/src/test/groovy/example/ConsumeBeanSpec.groovy

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 общих фреймов.квалифицируется как автопрокатный кандидат.Примечания к зависимостям: {} at org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound (DefaultListableBeanFactory.java:1509) в org.springframework.beact.fey.Fext.FBspringframework.ConstructorResolver.createArgumentArray (ConstructorResolver.java:721) ... пропущено 54 общих кадра

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: Ошибка при создании bean-компонента с именем 'customerBean', определенным в файле [C: \ tools \ micronaut.io \ study \ micronaut-expose-spring-beans \ out \ production \ classes \ example \ ConsumerBean.class]: неудовлетворенная зависимость, выраженная через параметр конструктора 0;вложенное исключение - org.springframework.beans.factory.NoSuchBeanDefinitionException: нет доступного квалифицирующего компонента типа 'example.ExposedBean': ожидается, что по крайней мере 1 компонент будет квалифицирован как кандидат для автоматического подключения.Аннотации зависимостей: {} at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray (ConstructorResolver.java:729) в org.springframework.beans.factory.support.ConstructorResolver.auverwstrug. Org. Org. Org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor (AbstractAutowireCapableBeanFactory.java:1274) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance (AbstractAutowireCapableBeanFactory.java:1131) при org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean (AbstractAutowireCapableBeanFactory.java:541)

1 Ответ

0 голосов
/ 29 июня 2018

Я отправил PR на https://github.com/luistrigueiros/micronaut-expose-spring-beans/pull/1, что позволяет вашему тесту пройти.

Поскольку Javadocs на https://docs.micronaut.io/1.0.0.M1/api/io/micronaut/spring/beans/MicronautBeanProcessor.html, MicronautBeanProcessor обрабатывает только одноэлементные компоненты.

Это наложено на https://github.com/micronaut-projects/micronaut-core/blob/0108642b11d0c6d7f11bcffc85b357e823c98d42/spring/src/main/java/io/micronaut/spring/beans/MicronautBeanProcessor.java#L109.

В Javadoc об этом ясно.Мы добавим немного ясности в руководство пользователя.

...