目錄
1、springboot啓動報錯start bean 'eurekaAutoServiceRegistration' NullPointerException
2、項目啓動端口衝突
1、springboot啓動報錯start bean 'eurekaAutoServiceRegistration' NullPointerException
原因:兩種,第一種:
是關閉ApplicationContext時,它將銷燬所有單例bean,eurekaAutoServiceRegistration
首先銷燬,然後銷燬feignContext
。銷燬feignContext時
,它將關閉與每個FeignClient關聯的ApplicationContext。由於eurekaAutoServiceRegistration
監聽ContextClosedEvent,因此這些事件將發送到該bean。不幸的是,由於它已被銷燬,因此我們得到了上述異常(嘗試在銷燬中創建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));
}
}
原因2:可能是jar包引用衝突,可以查看maven依賴逐個排查
2、項目啓動端口衝突
這個現象可能有兩個原因:
1)同一個項目啓動的狀態下,直接關閉idea編輯器,重新運行該項目時會發生端口衝突
2)可能有另一個項目佔用這個端口
解決方法(有三種):
方法一、修改項目端口,換一個不衝突的端口(端口很多,不用擔心不夠用)
方法二、查殺進程
a.lsof -i:8080 查找佔用端口的程序(實例是查找佔用8080端口的進程)
b.kill -9 1472 殺進程(1472爲查到的進程號)
方法三、關機重啓