首页 > 编程知识 正文

exclude,exclude函数

时间:2023-05-03 23:16:04 阅读:196440 作者:1882

SpringBootApplication的exclude不生效问题排查 背景

在ManApplication上添加了SpringBootApplication中配置了exclude={org.springframework.boot.autoconfigure.data.elasticsearch.ElasticsearchAutoConfiguration.class}

但是在启动过程了ElasticsearchAutoConfiguration还是加载了,使用配置文件的方式就可以避免加载。

排查

首先怀疑是不是启动的类加载了ElasticsearchAutoConfiguration的初始化方法,查找无果。

于是想通过SpringBootApplication的启动过程来排查。

SpringBootApplication的启动入口是SpringApplication.run()方法。

调用时序图可以参考以下:

在debug的过程中发现还有其他的@EnableAutoConfiguration注解,更直白的说是jar包存在类中@SpringBootApplication没有exclude. 从EnableAutoConfigurationImportSelector类可以看到getExclusions的逻辑正好解释了这一现象。

另外从注解可以直接达到,以后有关@…AutoConfiguration的应该找注解上的@Import注解中的解析类,可以直达解析逻辑。

结论 使用配置的方式进行exclude推动包含@EnableAutoConfiguration的去掉,因为jar包内不应该有。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。