问题描述
我已经在spring boot应用程序的主类中使用componentScan
注释,但是如果我仅使用此注释,则在获取存储库引用时会出现问题。因此,为了克服这个问题,我在EntityScan
中使用了EnableJpaRepositories
和componentScan
注释。
@EntityScan(basePackages={"com.gonkar.fleetms.models"})
@EnableJpaRepositories(basePackages={"com.gonkar.fleetms.repositories"})
所以我的问题是,为什么需要使用其他两个注释?如果我已经在使用componentScan。
解决方法
@ComponentScan
注释用于为使用@Component
,@Controller
/ @RestController
,@Service
,@Repository
注释的类创建bean。它将它们标记为已添加到Spring容器中(使它们有资格进行依赖注入并允许它们成为@Autowired
)。
@EntityScan
注释不会创建任何bean,它标识JPA持久性上下文应使用哪些类。
@EnableJpaRepositories
注释用于从Spring Data接口创建存储库类。
这三个注释经常一起使用,但是它们负责不同的事情。