找回密码
 立即注册
首页 业界区 业界 SpringBoot--自动配置的替换和关闭

SpringBoot--自动配置的替换和关闭

鸳剿 2025-7-18 08:34:35
SpringBoot启用自动配置需要使用@EnableAutoConfiguration注解,整个应用只需一个该注解,因此,只要将该注解加到主配置类即可。
由于 @SpringBootApplication是由@EnableAutoConfiguration、@ComponentScan、@Configuration这三个组合的,因此,只要项目中使用了@SpringBootApplication,也自然使用了@EnableAutoConfiguration,从而启用了自动配置。
自动配置的替换

SpringBoot自动配置通常有一个原则:当容器中不存在特定类型的Bean时,SpringBoot才会配置该类型的bean。例如引入spring-boot-starter-jdbc依赖,SpringBoot会尝试在容器中自动配置一个DataSource bean,但如果显示的在容器中配置了一个DataSource bean,那么SpringBoot就不会去自动配置了。
SpringBoot提供一个@ConditionalOnMissingBean注解,该注解通常和@Bean同时使用,这表示只有当某个bean不存在时,才会创建@Bean修饰的Bean,
比如以下代码:
  1. // 如果容器中没有DataSource类型的Bean,则创建一个DriverDataSource作为默认数据源
  2. @ConditionalOnMissingBean({DataSource.class})
  3. @Bean
  4. public DataSource dataSource(){
  5.    return new DriverDataSource();
  6. }
  7. // 如果容器中不存在名为dataSource的Bean,则创建一个DriverDataSource作为默认数据源
  8. @ConditionalOnMissingBean(name = "dataSource")
  9. @Bean
  10. public DataSource dataSource(){
  11.    return new DriverDataSource();
  12. }
复制代码
禁用特定的自动配置

要禁用特定的自动配置类,可通过@EnableAutoConfiguration注解的如下属性来指定:

  • exclude:值可以是一个Class数组,用于禁用一个或多个自动配置类
  • excludeName:指定一个或多个自动配置类的完整类名的字符串
实际使用中,@SpringBootApplication已包含了@EnableAutoConfiguration,@SpringBootApplication注解的exclude、excludeName两个属性就是@EnableAutoConfiguration注解的这两个属性的别名。
比如禁用DataSourceAutoConfiguration的自动配置类
  1. // 禁用Spring Boot的自动数据源配置
  2. @SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
  3. public class App
  4. {
  5.    public static void main(String[] args)
  6.    {
  7.       // 创建Spring容器、运行Spring Boot应用
  8.       SpringApplication.run(App.class, args);
  9.    }
  10. }
复制代码
在application.properties中通过spring.autoconfigure.exclude来指定要禁用的配置类,比如禁用DataSourceAutoConfiguration和ActiveMQAutoConfiguration:
  1. spring.autoconfigure.exclude=org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, org.springframework.boot.autoconfigure.jms.activemq.ActiveMQAutoConfiguration
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册