Работает ли CDI с аннотацией Spring DI, когда он от внешней зависимости? - PullRequest
2 голосов
/ 29 мая 2020

Я пишу код, который должен быть совместим как с Quarkus, так и с Spring DI. Я использую расширения DI и Spring Boot Properties, Spring Boot Extension. По-видимому, он работает нормально, но внедрение любого другого объекта из внешней зависимости, которая была аннотирована как bean-компонент, никуда не внедряется. Quarkus, кажется, не распознает это.

Это какое-то ограничение Spring DI Extension? Я уже пробовал использовать свойство quarkus.index-dependency, а также пытался включить зависимость, структурированную как расширение Quarkus, но это не сработало.

РЕДАКТИРОВАТЬ 1: Как указано @Kolossus, добавив beans.xml решил проблему DI, но у меня есть другая ошибка, связанная с классом свойств:

java .lang.RuntimeException: io.quarkus.builder.BuildException: Ошибка сборки: сбой сборки из-за ошибок

        [error]: Build step io.quarkus.arc.deployment.ArcProcessor#validate threw an exception: javax.enterprise.inject.spi.DeploymentException: Found 3 deployment problems: 
[1] Ambiguous dependencies for type com.properties.IntegrationProperties and qualifiers [@Default]
        - java member: com.authorization.AuthenticationService#<init>()
        - declared on CLASS bean [types=[com.authorization.AuthenticationService, java.lang.Object], qualifiers=[@Named(value = "authenticationService"), @Default, @Any], target=com.authorization.AuthenticationService]
        - available beans:
                - CLASS bean [types=[com.properties.IntegrationProperties, java.lang.Object], qualifiers=[@Default, @Any], target=com.properties.IntegrationProperties]
                - PRODUCER METHOD bean [types=[com.properties.IntegrationProperties, java.lang.Object], qualifiers=[@Default, @Any], target=com.properties.IntegrationProperties produceIntegrationProperties(org.eclipse.microprofile.config.Config), declaringBean=io.quarkus.arc.runtime.config.ConfigPropertiesProducer]

Неоднозначные зависимости во всех точках внедрения для класса свойств.

1 Ответ

2 голосов
/ 01 июня 2020

Добавление beans.xml к зависимости решило мою проблему. Проблема с классом свойств заключалась в том, что класс был аннотирован следующим образом:

@Configuration @ConfigurationProperties(prefix = "some-prefix") public class IntegrationProperties

Итак, Quarkus создавал 2 bean-компонента одного типа, один из-за @configuration и другое из-за @ConfigurationProperties. Я исправил это, добавив @EnableConfigurationProperties(IntegrationProperties.class) в другой класс конфигурации.

...