java.util.concurrent.Executors#newSingleThreadExecutor()中的ThreadFactory生成的Thread不是守护线程，并且没有相应逻辑在Spring初始化异常出现时调起ExecutorService的shutdown方法，导致spring初始化失败进程依旧存在，无法通过进程是否存在判断程序启动是否正常。建议更换ThreadFactory。可通过错误的application.yml配置复现问题。
Stream.of(beansNames)
                .filter(beansName -> isConfiguredApplicationConfigBeanName(environment, beansName))
                .forEach(registry::removeBeanDefinition);
        beansNames = beanNamesForTypeIncludingAncestors(beanFactory, ApplicationConfig.class);
        if (beansNames.length > 1) {
            throw new IllegalStateException(String.format("There are more than one instances of %s, whose bean definitions : %s",
                    ApplicationConfig.class.getSimpleName(),
                    Stream.of(beansNames)
                            .map(registry::getBeanDefinition)
                            .collect(Collectors.toList()))
            );
        }
    }
    private boolean isConfiguredApplicationConfigBeanName(Environment environment, String beanName) {
        boolean removed = BeanFactoryUtils.isGeneratedBeanName(beanName)
                
                || Objects.equals(beanName, environment.getProperty("dubbo.application.id"));
        if (removed) {
            if (logger.isDebugEnabled()) {
                logger.debug("The {} bean [ name : {} ] has been removed!", ApplicationConfig.class.getSimpleName(), beanName);
            }
        }
        return removed;
    }
    @Override
    public int getOrder() {
        return LOWEST_PRECEDENCE;
    }
}