Kotlin + Spring 5 функциональных бобов, смешанных с тестом традиционных бобов БЕЗ пружинной загрузки - PullRequest
0 голосов
/ 23 мая 2019

Предположим, у меня есть класс, внедривший много весенних бобов:

@Component
open class CoreContext {

  @Inject
  protected lateinit var bean1 : SomeInterface1

  @Inject
  protected lateinit var bean2 : SomeInterface2

}

Он определен в блоке context:component-scan в core.xml, и в традиционном SpringTest он работает следующим образом:

@RunWith(SpringRunner::class)
@ContextConfiguration(locations = ["classpath:core.xml"])
class CoreContextTest { ... }

Теперь я хочу попробовать использовать DSL-стиль для определения bean-компонентов и использовать эти DSL-определенные bean-компоненты со старыми bean-компонентами:

@Component
class MyBeans : CoreContext() {

  val beans = beans {

    bean("simpleComparator") {
      Comparator<Number> { o1, o2 -> o1.toInt().minus(o2.toInt()) }
    }

  }
}

MyBeans находится в component-scan пакеты, и IntelliJ правильно обнаруживает это.detected by IntelliJ

Но как проверить этот простой компаратор?

Я пытаюсь @Inject simpleComparator : Comparator<Number>, но intelliJ жалуется No beans of Comparator<Number> type found.И во время выполнения это не удалось, как ожидалось.


@RunWith(SpringRunner::class)
@ContextConfiguration(locations = ["classpath:core.xml"])
class MyBeansTest {


  @Inject
  private lateinit var context: ApplicationContext

//  @Inject // No beans of Comparator<Number> type found
//  private lateinit var simpleComparator : Comparator<Number> 

  @Test
  fun printBeans() {
    logger.info("context = {}", context)
    context.beanDefinitionNames.forEach { name ->
      logger.info("{}", name)
    }
  }

}

И когда я хочу распечатать все зарегистрированные bean-компоненты, я не могу найти bean-компонент simpleComparator.

Кажется, что вся связанная информацияSpringBoot на основе.Но я не могу найти чистый SpringRunner пример модульного теста.Спасибо.

версии:

<kotlin.version>1.3.30</kotlin.version>
<spring.version>5.1.4.RELEASE</spring.version>
...