1. 概述
在本快速教程中,我们将探讨在Spring Boot中禁用数据库自动配置的两种不同方法。这在测试时可以派上用场。
我们将举例说明Redis、MongoDB和Spring Data JPA。
我们将从查看基于注解的方法开始,然后我们将查看属性文件方法。
2. 使用注解
让我们从MongoDB示例开始。我们需要做的就是排除的特定的自动配置类:
@SpringBootApplication(exclude = {
MongoAutoConfiguration.class,
MongoDataAutoConfiguration.class
})
同样,我们可以禁用Redis的自动配置:
@SpringBootApplication(exclude = {
RedisAutoConfiguration.class,
RedisRepositoriesAutoConfiguration.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是否不存在:
@Autowired
private ApplicationContext context;
@Test
void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() {
assertThrows(NoSuchBeanDefinitionException.class, () -> context.getBean(MongoTemplate.class));
}
对于JPA,我们检查Datasource bean是否不存在:
@Autowired
private ApplicationContext context;
@Test
void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() {
assertThrows(NoSuchBeanDefinitionException.class, () -> context.getBean(DataSource.class));
}
最后,对于Redis,我们可以检查RedisTemplate bean是否不存在:
@Autowired
private ApplicationContext context;
@Test
void givenAutoConfigDisabled_whenStarting_thenNoAutoconfiguredBeansInContext() {
assertThrows(NoSuchBeanDefinitionException.class, () -> context.getBean(RedisTemplate.class));
}
5. 总结
在这篇简短的文章中,我们学习了如何为不同的数据库禁用Spring Boot自动配置。
与往常一样,本教程的完整源代码可在GitHub上获得。
Show Disqus Comments
Post Directory
扫码关注公众号:Taketoday
发送 290992
即可立即永久解锁本站全部文章