Spring Booter: AutoConfigurationExcludeFilter过滤器

CommonentScan另一个默认配置的过滤器就是AutoConfigurationExcludeFilter.

在Spring Boot中,AutoConfigurationExcludeFilter是一个实现了TypeFilter接口的类。它的作用是在自动配置过程中排除不需要的自动配置类。这个过滤器可以帮助开发者精细控制哪些自动配置类应该被Spring容器考虑,从而避免不必要的Bean创建和潜在的冲突。

AutoConfigurationExcludeFilter通过实现TypeFilter接口的match方法来工作。在Spring Boot的自动配置阶段,会读取spring.factories文件中累出的自动配置类。AutoConfigurationExcludeFilter会在这些类被加载之前运行,根据开发者设定的条件来决定是否排除某些自动配置类。

有两种使用方法:

方法1: 使用@SpringBootApplication注解的exclude属性,排除特定的自动配置类。

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

方法2: 使用@EnableAutoConfiguration注解的exclude属性

package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;

@SpringBootApplication
@EnableAutoConfiguration(exclude = {DataSourceAutoConfiguration.class})
public class MyApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyApplication.class, args);
    }
}

方法3: 使用spring.autoconfigure.exclude属性

spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration

发表回复

您的电子邮箱地址不会被公开。