我的项目结构如下:
java/com.company.foo/container/configuration/
该文件夹包含
@ComponentScan({"com.company.foo.module.project",
"com.company.foo.module.user"})
@Configuration
@EnableScheduling
@Import(value = {
SecurityConfiguration.class})
public class ApplicationContextConfiguration {
}
我的 ResourcePlannerApplication 位于此文件夹中:
java/com.company.foo/container/
并具有以下注释:
@Import({ApplicationContextConfiguration.class})
@SpringBootApplication
现在我有两个模块项目和用户具有相同的结构:
java/com.company.foo/module/user/dao/
该文件夹包含:
public interface UserRepository extends JpaRepository<UserEntity, Long> {
UserEntity findByUsername(String username);
}
现在,当我启动应用程序时,它会告诉我:
考虑在配置中定义“com.company.foo.module.user.dao.UserRepository”类型的 bean。
我没有看到问题,因为 ComponentScan 正在扫描所有文件夹?
最佳答案
组件扫描不会拾取 JPA 存储库,因为它们只是接口(interface),只要您在配置中包含了 @EnableJpaRepositories 注释,Spring Data 就会将具体类动态创建为 bean:
@ComponentScan({"com.company.foo.module.project",
"com.company.foo.module.user"})
@Configuration
@EnableScheduling
@EnableJpaRepositories("com.company.foo.module.user")
@Import(value = {
SecurityConfiguration.class})
public class ApplicationContextConfiguration {
}
关于spring-boot - 考虑为 jpa 存储库定义一个 bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48542606/