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
发表回复