У нас есть приложение, в котором одна из наших внутренних библиотек определила bean-компонент, подобный этому
<bean id="myBean" class="${myBean.type}"/>
У нас есть сервер Spring Cloud Config, который при запуске передает свойства этому приложению, который также содержит свойство myBean.type
.Эта настройка в настоящее время работает без проблем.Затем я внес следующие изменения в свой pom
Ранее
<spring.boot.version>1.5.16.RELEASE</spring.boot.version>
<spring.cloud.version>Edgware.RELEASE</spring.cloud.version>
<spring.version>4.3.19.RELEASE</spring.version>
Now
<spring.boot.version>2.0.9.RELEASE</spring.boot.version>
<spring.version>5.0.13.RELEASE</spring.version>
<spring.cloud.version>Finchley.SR2</spring.cloud.version>
Затем я началПолучение этой ошибки при запуске
An attempt was made to call the method org.springframework.beans.factory.support.BeanDefinitionBuilder.addConstructorArg(Ljava/lang/Object;)Lorg/springframework/beans/factory/support/BeanDefinitionBuilder; but it does not exist. Its class, org.springframework.beans.factory.support.BeanDefinitionBuilder, is available from the following locations:
jar:file:/I:/Library/MavenRepository/org/springframework/spring-beans/5.0.13.RELEASE/spring-beans-5.0.13.RELEASE.jar!/org/springframework/beans/factory/support/BeanDefinitionBuilder.class
It was loaded from the following location:
file:/I:/Library/MavenRepository/org/springframework/spring-beans/5.0.13.RELEASE/spring-beans-5.0.13.RELEASE.jar
Action:
Correct the classpath of your application so that it contains a single, compatible version of org.springframework.beans.factory.support.BeanDefinitionBuilder
Глядя на это, я исключил артефакт org.apache.cxf:cxf-api:jar:2.7.18:compile
из всех jar-файлов, которые зависели от него, и обновил версии jx-файлов cxf до 3.2.5
.Теперь запуск запускается, но он выдает мне следующую ошибку:
org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [${myBean.type}] for bean with name 'myBean' defined in class path resource [xyz.xml]; nested exception is java.lang.ClassNotFoundException: ${myBean.type}
Я не уверен, что удаление cxf-api
вызывает эту проблему, или обновление Spring Boot 2, или это что-тоиначе здесь что-то идет не так!