BeanCreationException:在类路径资源中定义的名称为'configurationPropertiesBeans'的bean创建时出错。

6

我正在编写一个小程序用于断路器。运行应用程序时,它会抛出异常。
使用springboot版本2.5.4,Hystrix版本为2.2.6
BeanCreationException: 在类路径资源[org/springframework/cloud/autoconfigure/ConfigurationPropertiesRebinderAutoConfiguration.class]中定义的名称为 'configurationPropertiesBeans' 的bean创建失败:合并bean定义的后处理失败;嵌套异常是java.lang.IllegalStateException:从ClassLoader [jdk.internal.loader.ClassLoaders$AppClassLoader@659e0bfd] 的Class [org.springframework.cloud.context.properties.ConfigurationPropertiesBeans] 内省失败。

Pom.xml

<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>2.5.4</version>
    <relativePath /> <!-- lookup parent from repository -->
</parent>
<groupId>com.ramgovindhare</groupId>
<artifactId>cricuitbreakerhystrix</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>CricuitBreakerHystrix</name>
<description>firstMicroserviceProject</description>
<properties>
    <java.version>11</java.version>
</properties>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-netflix-hystrix -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
        <version>2.2.8.RELEASE</version> <--- **See this**
    </dependency>
    
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <scope>runtime</scope>
        <optional>true</optional>
    </dependency>
</dependencies>

<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

CricuitBreakerHystrixApplication.java

@SpringBootApplication
@EnableCircuitBreaker
public class CricuitBreakerHystrixApplication {

    public static void main(String[] args) {
        SpringApplication.run(CricuitBreakerHystrixApplication.class, args);
    }
}

控制器类

@RestController
public class CricutiBreakerHystrixController {
    
    @GetMapping("/process")
    @HystrixCommand(fallbackMethod = "doWork")
    public String doProcess() {
        String response = "This msg come for processes";
        int i = 10 / 0;
        return response;
    }
    
    public String doWork() {
        return "This msg coming from doWork()...!!";
    }
}
2个回答

10
只需将spring-cloud-dependencies添加到dependencyManagement块中:
<properties>
    <spring.cloud-version>2020.0.3</spring.cloud-version>
</properties>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>${spring.cloud-version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

对应版本的spring-cloud可以在这里找到。


这种类型的错误抛出:项目com.ramgovindhare:cricuitbreakerhystrix:0.0.1-SNAPSHOT(/media/ngsharma/NgSharma1/SpringWorkSpace/CricuitBreakerHystrix/pom.xml)有一个错误。无法解析的导入POM:在之前的尝试中未能在https://repo.maven.apache.org/maven2找到org.springframework.cloud:spring-cloud-dependencies:pom:${spring.cloud-version}。此故障已缓存到本地存储库中,并且在中央更新间隔过去或强制更新之前不会重新尝试解决@第45行,第16列->[帮助2]。 - Ng Sharma
@NgSharma,请分享完整的pom.xml文件。 - Alexandr Arhipov
我已经使用dependencyManagement修改了你的示例。该应用程序在我的环境中成功启动 - https://github.com/firstsarcasm/stack-overflow-answers/blob/master/answer-1/pom.xml - Alexandr Arhipov

10

严格按照官方版本匹配Spring Boot版本和Spring Cloud版本。官网链接:spring-cloud Release train Spring Boot compatibility


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接