Spring Boot 对 Spring 数据配置的支持一般是通过org.springframework.boot.autoconfigure.data.AbstractRepositoryConfigurationSourceSupport,这个类使用下面的代码来确定扫描哪些包来存储库:
AutoConfigurationPackages.get(this.beanFactory)
Run Code Online (Sandbox Code Playgroud)
所以,基本上 Spring Data with Spring Boot 只扫描包含@EnableAutoConfigurationor的包@ImportAutoConfiguration,而不考虑@ComponentScan,这是正确的吗?
该@ComponentScan注释是一个核心Spring框架的特性来搜索与注释类@Component。由于 Spring Data 存储库是接口(并且没有注释),因此@ComponentScan注释不会选择它们。
如果您使用的春天启动的春季数据外,你可以扫描使用Spring的数据仓库@EnableJpaRepositories与basePackages属性集。
当涉及到 Spring Boot 时,通常不需要使用@ComponentScan或@EnableJpaRepositories。如果您按照建议构建代码,则组件和存储库都将被选中。
回到你最初关于AbstractRepositoryConfigurationSourceSupport. 如果您查看源代码,@SpringBootApplication您会发现它带有@ComponentScan(to find @Components) 和@AutoConfigurationPackage(via @EnableAutoConfiguration)注释。使用稍后检索的值进行@AutoConfigurationPackage设置AutoConfigurationPackages。
如果要覆盖 Spring Data 搜索存储库的包(例如在测试中),则需要使用它@EnableJpaRepositories来完全覆盖自动配置。我通常不这样做,而是使用@DataJpaTest并选择我的主要配置。
| 归档时间: |
|
| 查看次数: |
1923 次 |
| 最近记录: |