jpa:repositories / @EnableJpaRepositories vs @Repository - spring

时间:2015-08-29 15:01:15

标签: java spring jpa

使用@EnableJpaRepositoriesjpa:repositories(在xml上)是否允许开发人员不使用Spring的@Repository标记?当我查看Spring的示例指南时,他们的大多数示例都是他们不再在其接口上使用@Repository标记来扩展Spring Data的JpaRepository或CrudRepository接口。

我试图一起使用它们但是Intellij警告我它不能自动装入我的存储库,因为有多个bean。我试图在我的xml文件中删除jpa:repositories但是出现了一个错误,即应用程序无法为我的实体管理器创建一个bean。

2 个答案:

答案 0 :(得分:1)

这是两件不同的事情。 @Repository注释比Spring Data早得多,用于告诉Spring将@Repository注释组件抛出的所有异常转换为DataAccessException(更多内容请阅读:http://docs.spring.io/spring/docs/current/javadoc-api/org/springframework/stereotype/Repository.html

在SpringData中,您拥有@EnableJpaRepositories +整个底层扫描和存储库bean生成机制,无需使用@Repository标记存储库接口(或自定义类)。

答案 1 :(得分:0)

Spring Data Documentation是恕我直言,并不完全清楚这一点。 在第3.1.1章中,它说:

  

使用repositories元素查找Spring Data存储库,如“创建存储库实例”中所述。除此之外,它还激活了使用@Repository注释的所有bean的持久性异常转换,以便将JPA持久性提供程序抛出的异常转换为Spring的DataAccessException层次结构。

对我而言,这听起来你仍然需要明确添加@Repository才能激活持久性异常翻译。