最近在练习Eureka,在搭建环境的时候遇到了一点问题,于是记录了下来。
我把Eureka客户端的启动类命名为EurekaClient,一直启动不了,但我把类型改成MyEurekaClient之后,就能启动成功。
为什么启动类名不能是EurekaClient,带着疑问,一步一步debug,慢慢揭开了迷雾。
先看看Spring Boot 2.x版本报错信息

在Spring启动加载BeanDefinition的时候
调用栈
AbstractApplicationContext#refresh()
invokeBeanFactoryPostProcessors(beanFactory);

ConfigurationClassPostProcessor#processConfigBeanDefinitions(BeanDefinitionRegistry registry)
this.reader.loadBeanDefinitions(configClasses);


在练习Eureka时,发现启动类命名为EurekaClient会导致服务无法启动。通过debug,发现问题在于Spring Boot加载EurekaClientAutoConfiguration$RefreshableEurekaClientConfiguration时,由于启动类已注册为Bean,与配置类冲突。而在Spring Boot 1.x版本中,由于找不到EurekaClient类型的bean,导致依赖注入失败,引发异常。解决方案是避免将启动类命名为EurekaClient。
最低0.47元/天 解锁文章
819

被折叠的 条评论
为什么被折叠?



