天天自动装配,能不能消停会。。

924次阅读
没有评论

共计 1127 个字符,预计需要花费 3 分钟才能阅读完成。

1.前言

Springboot盛行的时代,自动装配的第三方库比比皆是,然而多个库之间可能会存在冲突,亦或者我们有需要静默的停用自动装配,掌握该技巧必不可少。

天天自动装配,能不能消停会。。

2.如何禁用

禁用自动装配的配置,最最简单粗暴的方式就是通过追加exclude的值,描述如下图

天天自动装配,能不能消停会。。

但是这种方式不够友好,毕竟自动装配的类大多数情况下是由一个公共模块引入的,总不能每一个服务依赖模块都加上这玩意吧,对有代码洁癖的人来说,多写一句重复代码就觉得难受。不过Springboot提供了另外一种方案

天天自动装配,能不能消停会。。

我们只需要新建spring.factories文件,添加我们自己的过滤器,编写处理需要禁用的自动配置类就OK了。假如我们要禁用Seata,首先定义我们的过滤器

public class MyAutoConfigurationImportFilter implements AutoConfigurationImportFilter {
    private static final Set<String> SHOULD_SKIP = new HashSet<>(
            Arrays.asList("com.alibaba.cloud.seata.feign.SeataFeignClientAutoConfiguration",
                    "io.seata.spring.boot.autoconfigure.SeataAutoConfiguration"));
    @Override
    public boolean[] match(String[] autoConfigurationClasses, AutoConfigurationMetadata autoConfigurationMetadata) {
        boolean[] matches = new boolean[autoConfigurationClasses.length];

        for(int i = 0; i< autoConfigurationClasses.length; i++) {
            matches[i] = !SHOULD_SKIP.contains(autoConfigurationClasses[i]);
        }
        return matches;
    }
}

告诉Springboot

org.springframework.boot.autoconfigure.AutoConfigurationImportFilter=\
cloud.mysteriousman.openfeign.configuration.MyAutoConfigurationImportFilter

这就大功告成了!

3.小结

本文简述了如何禁用自动配置,当然禁用的同时也会引入需要时无法使用的问题,这时候就需要我们自定义配置了,比如自定义注解实现我们自己的自动装配!

正文完
 
mysteriousman
版权声明:本站原创文章,由 mysteriousman 2022-04-19发表,共计1127字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)