我想知道使用注解@RepositoryRestController
和@Repository
到底有什么区别,因为我已经尝试了两者,但我发现绝对没有区别!
我尝试了以下操作:
@RepositoryRestResource
public interface MovieRepository extends JpaRepository<Movie, Short> {
}
和
@Repository
public interface MovieRepository extends JpaRepository<Movie, Short> {
}
所以当我尝试两种方法中的 / movies 时,我会得到相同的结果。
如果我使用@RepositoryRestController
,应该使用@RepositoryRestController
,还是可以使用@RestController
,两者之间有什么区别吗?
答案 0 :(得分:5)
@Repository
@Repository
是一个原型接口,用于定义存储库,该存储库最初由Domain-Driven Design(Evans,2003年)定义为”,用于封装存储,检索和搜索的机制模仿对象集合的行为”。。
此注释还用作@Component
的特化,允许通过类路径扫描自动检测实现类。
@RepositoryRestResource
@RepositoryRestResource
告诉Spring Data REST将您的存储库公开为REST端点。查看文档的relevant部分。
如果您想利用Spring Data REST的设置,消息转换器,异常处理等为特定资源编写自定义处理程序,则可以使用@RepositoryRestController
(而不是标准的Spring MVC {{3}) }或@Controller
注释)。请参阅文档的@RestController
部分。
答案 1 :(得分:2)
它在带有或不带有注释的情况下适用的原因是,如果将Spring Boot与Spring Data REST一起使用,则在这种情况下会激活自动配置,该配置会自动将所有Spring Data接口公开为REST资源。您可以找到此配置here的源代码,并在reference documentation中找到有关自定义它的可能性的更多信息。
答案 2 :(得分:2)