Я использую весеннюю загрузку с зависимостью Azure для аутентификации Azure. В одном приложении я использую весеннюю загрузку версии 2.1.4. Процесс аутентификации здесь работает нормально.
Теперь, когда я подключаю одни и те же компоненты к приложению с использованием весенней загрузки версии 1.5.7.RELEASE, приложение выдает исключение нулевого указателя . Кажется, что исключения находятся вокруг аннотации @ ConfigurationProperties в классе AADAuthenticationProperties - свойство activeDirectoryGroups имеет аннотацию @ NotEmpty .
Похоже, свойства конфигурации, установленные в application.properties для AADAuthenticationProperties, не собираются. (Но это работает, как и ожидалось, в приложении с весенней загрузкой версии 2.1.4.RELEASE).
Подскажите, пожалуйста, чего здесь не хватает?
Трассировка стека:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'azure.activedirectory-com.microsoft.azure.spring.autoconfigure.aad.AADAuthenticationProperties': Could not bind properties to AADAuthenticationProperties (prefix=azure.activedirectory, ignoreInvalidFields=false, ignoreUnknownFields=true, ignoreNestedProperties=false); nested exception is java.lang.NullPointerException
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:334)
at org.springframework.boot.context.properties.ConfigurationPropertiesBindingPostProcessor.postProcessBeforeInitialization(ConfigurationPropertiesBindingPostProcessor.java:291)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsBeforeInitialization(AbstractAutowireCapableBeanFactory.java:409)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1620)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:555)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:483)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:306)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:230)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:302)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:208)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1138)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1066)
at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:835)
at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:741)
... 36 common frames omitted
Caused by: java.lang.NullPointerException: null
at sun.reflect.annotation.TypeAnnotationParser.mapTypeAnnotations(Unknown Source)
at sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedTypeBaseImpl.<init>(Unknown Source)
at sun.reflect.annotation.AnnotatedTypeFactory$AnnotatedParameterizedTypeImpl.<init>(Unknown Source)
at sun.reflect.annotation.AnnotatedTypeFactory.buildAnnotatedType(Unknown Source)
at sun.reflect.annotation.TypeAnnotationParser.buildAnnotatedType(Unknown Source)
at java.lang.reflect.Field.getAnnotatedType(Unknown Source)
at org.hibernate.validator.internal.metadata.provider.TypeAnnotationAwareMetaDataProvider.findTypeAnnotationConstraintsForMember(TypeAnnotationAwareMetaDataProvider.java:65)
Конфиги в application.properties
# Active Directory ID
azure.activedirectory.tenant-id=XXXX
# App Registration's Application ID:
azure.activedirectory.client-id=XXXX
# App Registration's secret key:
azure.activedirectory.client-secret=XXXX
# List of Active Directory groups to use for authorization:
azure.activedirectory.active-directory-groups=XXXX
azure.activedirectory.allow-telemetry=false
Обновление:
После отладки в течение нескольких часов я вижу, что свойства правильно устанавливаются в классе AADAuthenticationProperties при загрузке контекста пружины. Проблема возникает в hibernate-validator (TypeAnnotationAwareMetaDataProvider.findTypeAnnotationConstraintsForMember ()). Похоже, версия 6.0.16.Final должен быть использован. Но с весенней загрузкой версии 1.5.7 у меня сейчас 5.3.5. Финал.
Обновление только до 6.0.16.Final вызывает другие проблемы с зависимостями. Попытка выяснить следующие шаги.
Любые предложения / советы очень ценятся.