知識庫 / Spring / Spring Boot RSS 訂閱

禁用 Spring Data 自動配置

Spring Boot,Spring Data
HongKong
9
01:19 PM · Dec 06 ,2025

1. 引言

在本快速教程中,我們將探討兩種不同的方法來禁用 Spring Boot 中的數據庫自動配置。 這在測試時非常有用。

我們將提供 Redis、MongoDB 和 Spring Data JPA 的示例。

我們首先將研究基於註解的方法,然後我們將研究基於屬性文件的方法。

2. 禁用使用註釋

我們先來看一個 MongoDB 的例子。我們將查看需要排除的類:

@SpringBootApplication(exclude = {
    MongoAutoConfiguration.class, 
    MongoDataAutoConfiguration.class
})

同樣,我們還將查看如何禁用 Redis 的自動配置:

@SpringBootApplication(exclude = {
    RedisAutoConfiguration.class, 
    RedisRepositoryAutoConfiguration.class
})

最後,我們將探討如何禁用 Spring Data JPA 的自動配置:

@SpringBootApplication(exclude = {
    DataSourceAutoConfiguration.class, 
    DataSourceTransactionManagerAutoConfiguration.class, 
    HibernateJpaAutoConfiguration.class
})

3. 通過屬性文件禁用自動配置

我們還可以通過屬性文件禁用自動配置。

我們首先將使用 MongoDB 進行探索:

spring.autoconfigure.exclude= \
  org.springframework.boot.autoconfigure.mongo.MongoAutoConfiguration, \
  org.springframework.boot.autoconfigure.data.mongo.MongoDataAutoConfiguration

現在我們將禁用它,針對Redis:

spring.autoconfigure.exclude= \
  org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration, \
  org.springframework.boot.autoconfigure.data.redis.RedisRepositoriesAutoConfiguration

最後,我們將禁用它對 Spring Data JPA 的影響:

spring.autoconfigure.exclude= \ 
  org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration, \
  org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration, \
  org.springframework.boot.autoconfigure.jdbc.DataSourceTransactionManagerAutoConfiguration

4. 測試

為了進行測試,我們將檢查自動配置類中 Spring Bean 是否存在於我們的應用程序上下文中。

我們將從 MongoDB 測試開始。我們將驗證 MongoTemplate Bean 是否不存在:

@Test(expected = NoSuchBeanDefinitionException.class)
public void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() { 
    context.getBean(MongoTemplate.class); 
}

現在我們將檢查 JPA。對於 JPA,DataSource Bean 將不存在:

@Test(expected = NoSuchBeanDefinitionException.class)
public void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() {
    context.getBean(DataSource.class);
}

最後,對於 Redis,我們將檢查我們應用程序上下文中的 RedisTemplate Bean:

@Test(expected = NoSuchBeanDefinitionException.class)
public void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() {
    context.getBean(RedisTemplate.class);
}

結論

在本文中,我們學習瞭如何針對不同的數據庫禁用 Spring Boot 自動配置。

user avatar
0 位用戶收藏了這個故事!
收藏

發佈 評論

Some HTML is okay.