启动类报Error creating bean with name
时间: 2023-11-11 10:50:34 浏览: 77
启动类报Error creating bean with name是由于循环引用导致的异常。在错误信息中,提到了Bean with name ‘xxx’ has been injected into other beans [x] in its raw version as part of a circular reference。这意味着在bean的循环引用中,该bean被其他bean以原始版本注入,而不是使用最终版本的bean。这通常是由于过度匹配类型引起的。解决这个问题有两个方法:
1. 使用getBeanNamesOfType方法关闭过度匹配类型,以避免循环引用问题。
2. 添加spring-boot-starter-web依赖,并在FeignBeanFactoryPostProcessor类中设置bean的依赖关系,将feignContext的依赖项设置为eurekaAutoServiceRegistration。这样可以确保bean的初始化顺序正确。
相关问题
新建启动类报Error creating bean with name
新建启动类报Error creating bean with name的错误可能有多种原因导致。一种可能是缺少必要的依赖项,比如缺少spring-boot-starter-web依赖项。你可以在pom.xml文件中添加以下依赖项并重新启动服务器:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
如果添加了此依赖项仍然出现错误,可能是由于其他原因导致的。你可以检查错误日志中的详细信息,以获取更多的线索来解决问题。另外,你还可以尝试使用FeignBeanFactoryPostProcessor类,该类可以确保在创建Feign上下文之前,eurekaAutoServiceRegistration bean已经创建。你可以将以下代码添加到启动类中:
@Component
public class FeignBeanFactoryPostProcessor implements BeanFactoryPostProcessor {
@Override
public void postProcessBeanFactory(ConfigurableListableBeanFactory beanFactory) throws BeansException {
if (containsBeanDefinition(beanFactory, "feignContext", "eurekaAutoServiceRegistration")) {
BeanDefinition bd = beanFactory.getBeanDefinition("feignContext");
bd.setDependsOn("eurekaAutoServiceRegistration");
}
}
private boolean containsBeanDefinition(ConfigurableListableBeanFactory beanFactory, String... beans) {
return Arrays.stream(beans).allMatch(b -> beanFactory.containsBeanDefinition(b));
}
}
请注意,以上解决方法是基于提供的引用内容,具体解决方法可能因具体情况而异。
启动类报Error creating bean with name 'configurationPropertiesBeans' defined in class path resource
启动类报Error creating bean with name 'configurationPropertiesBeans' defined in class path resource 是由于在Spring Boot项目中,无法创建名为'configurationPropertiesBeans'的bean所引起的错误。
根据提供的引用内容,这个问题可能由于Spring Boot和Spring Cloud Alibaba版本之间的不兼容性导致。根据引用中的建议,将Spring Boot的版本从2.5.11改为2.3.12.RELEASE可能解决这个问题。
此外,还可以检查启动类中是否存在错误的配置或依赖项,并确保它们与使用的版本兼容。
阅读全文