Определение bean-компонента типа «com.netflix.discovery.AbstractDiscoveryClientOptionalArgs» в вашей конфигурации

Я переношу свое приложение с Spring boot версии 1.5.22.RELEASE на 2.5.5 для устранения уязвимостей. В одном модуле локатора кеша я использую spring-boot-starter-data-gemfire 1.5.22.RELEASE вместе с версией com.gemstone.gemfire:gemfire:8.2.7, spring-cloud-starter-netflix-eureka-client. 3.1.0 и другие зависимости Spring Framework, как

      <dependencies>
  <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-gemfire</artifactId>
     <version>1.5.22.RELEASE</version>
     <exclusions>
       <exclusion>
           <groupId>com.gemstone.gemfire</groupId>
           <artifactId>gemfire</artifactId>
       </exclusion>
       <exclusion>
           <groupId>com.gemstone.gemfire</groupId>
           <artifactId>gemfire</artifactId>
       </exclusion>
       <exclusion>
           <groupId>ch.qos.logback</groupId>
           <artifactId>logback-core</artifactId>
       </exclusion>
       <exclusion>
           <groupId>com.fasterxml.jackson.core</groupId>
           <artifactId>jackson-databind</artifactId>
       </exclusion>
       <exclusion>
           <groupId>ch.qos.logback</groupId>
           <artifactId>logback-classic</artifactId>
       </exclusion>
       <exclusion>
           <groupId>org.apache.logging.log4j</groupId>
           <artifactId>log4j-to-slf4j</artifactId>
       </exclusion>
     </exclusions>
   </dependency>

   <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson-databind</artifactId>
       <version>2.13.2.1</version>
   </dependency>
   <dependency>
       <groupId>com.fasterxml.jackson.core</groupId>
       <artifactId>jackson.core</artifactId>
       <version>2.13.1</version>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
       <scope>compile</scope>
   </dependency>
   <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>jcl-over-slf4j</artifactId>
   </dependency>
   <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-core</artifactId>
       <version>1.2.7</version>
   </dependency>
   <dependency>
       <groupId>ch.qos.logback</groupId>
       <artifactId>logback-classic</artifactId>
       <scope>runtime</scope>
   </dependency>

  <dependency>
     <groupId>org.springframework.cloud</groupId>
     <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
     <version>3.1.0</version>
     <exclusions>
       <exclusion>
           <groupId>org.bouncycastle</groupId>
           <artifactId>bcprov-jdk15on</artifactId>
       </exclusion>
       <exclusion>
           <groupId>com.thoughtworks.xstream</groupId>
           <artifactId>xstream</artifactId>
       </exclusion>
       <exclusion>
           <groupId>com.google.code.gson</groupId>
           <artifactId>gson</artifactId>
       </exclusion>
       <exclusion>
           <groupId>org.apache.tomcat.embed</groupId>
           <artifactId>tomcat-embed-core</artifactId>
       </exclusion>
       <exclusion>
           <groupId>org.hibernate</groupId>
           <artifactId>hibernate-validator</artifactId>
       </exclusion>
       <exclusion>
           <groupId>io.netty</groupId>
           <artifactId>netty-codec-http</artifactId>
       </exclusion>
       <exclusion>
           <groupId>org.apache.httpcomponents</groupId>
           <artifactId>httpclient</artifactId>
       </exclusion>
     </exclusions>
   </dependency>

   <dependency>
       <groupId>org.apache.httpcomponents</groupId>
       <artifactId>httpclient</artifactId>
       <version>4.5.13</version>
   </dependency>
   <dependency>
       <groupId>org.hibernate</groupId>
       <artifactId>hibernate-validator</artifactId>
       <version>6.1.5.Final</version>
   </dependency>
   <dependency>
       <groupId>com.thoughtworks.xstream</groupId>
       <artifactId>xstream</artifactId>
       <version>1.4.19</version>
   </dependency>
   <dependency>
       <groupId>org.bouncycastle</groupId>
       <artifactId>bcprov-jdk15on</artifactId>
       <version>1.67</version>
   </dependency>

   <dependency>
       <groupId>com.gemstone.gemfire</groupId>
       <artifactId>gemfire</artifactId>
       <version>8.2.7</version>
   </dependency>
   <dependency>
       <groupId>commons-io</groupId>
       <artifactId>commons-io</artifactId>
       <version>2.7</version>
   </dependency>

   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-core</artifactId>
       <version>5.3.20</version>
   </dependency>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-beans</artifactId>
       <version>5.3.20</version>
   </dependency>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-context</artifactId>
       <version>5.3.20</version>
   </dependency>
   <dependency>
       <groupId>org.springframework</groupId>
       <artifactId>spring-expression</artifactId>
       <version>5.3.18</version>
   </dependency>
       <groupId>org.springframework.boot</groupId>
       <artifactId>spring-boot-properties-migrator</artifactId>
       <version>2.5.5</version>
   </dependency>
 </dependencies>

<build>
   <plugins>
       <plugin>
             <groupId></groupId>
             <artifactId></artifactId>
             <executions>
                 <execution>
                     <goals>
                         <goal>build-info</goal>
                     </goals>
                 </execution>
             </executions>
       </plugin>
   </plugins>
</build>

Основной класс этого модуля как-

      @SpringBootApplication
@ImportResource({"gemfire-locator.xml"})
@EnableEncryptableProperties
public class LocatorApp {
  public static void main(final String[] args) { 
       SpringApplication.run(LocatorApp.class, args);
  }
}

Я определил конфигурацию в файле application-local.properties для этого модуля как

      #spring.profiles.active=local
#spring.profiles.include=pulse.authentication.custom
spring.profiles.groups.local=pulse.authentication.custom

spring.application.name=gemfirelocator
server.hostname=#{T.........}
server.port=9020
gemfire.properties.location=/gemfire/gemfire-locator-local.properties
data.location=.

Когда я пытаюсь запустить эту службу, я получаю следующую ошибку:

      Field optionalArgs in org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration required a bean of type 'com.netflix.discovery.AbstractDiscoveryClientOptionalArgs' in your configuration.

  The injection point has following annotations:
   @org.springframework.beans.factory.annotation.Autowired(required=true)

Я пытался изменить и попробовать другие версии netflix-eureka-client, а также попытался удалить многие исключения зависимостей в этом файле pom.xml, но ничего не помогло запустить мою службу, которую я могу запустить с весенней загрузкой версии 1.5. .22.ОТПУСК.

Как я могу решить эту проблему?

4 ответа

Я решил эту проблему, проверив совместимость версий Spring Boot и Spring Cloud. Раньше у меня были: Spring Boot (3.1.1) и Spring Cloud (2022.0.3), которые выдавали мне эту ошибку. Я обновился до Spring Boot (3.0.5) и Spring Cloud (2022.0.1), и ошибка исчезла.

Убедитесь, что вы использовали @EnableEurekaServer в своем основном классе.

        @SpringBootApplication
  @ImportResource({"gemfire-locator.xml"})
  @EnableEncryptableProperties
  @EnableEurekaServer
  public class LocatorApp {
      public static void main(final String[] args) { 
        SpringApplication.run(LocatorApp.class, args);
       }
  }

добавьте эту зависимость, чтобы решить эту проблему

      
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
 </dependency>

очевидно, есть проблема с совместимостью версий Spring Boot и Spring Cloud, но у меня есть другой микросервис с почти такой же конфигурацией + веб-зависимостью Spring, он работает нормально. поэтому добавьте Spring Web в свой микросервис.

Другие вопросы по тегам