@RepositoryRestController和@Repository批注有什么区别?

时间:2018-08-18 22:16:44

标签: java spring spring-boot spring-data

我想知道使用注解@RepositoryRestController@Repository到底有什么区别,因为我已经尝试了两者,但我发现绝对没有区别!

我尝试了以下操作:

@RepositoryRestResource
public interface MovieRepository extends JpaRepository<Movie, Short> { 
} 

@Repository
public interface MovieRepository extends JpaRepository<Movie, Short> { 
}

所以当我尝试两种方法中的 / movies 时,我会得到相同的结果。

如果我使用@RepositoryRestController,应该使用@RepositoryRestController,还是可以使用@RestController,两者之间有什么区别吗?

3 个答案:

答案 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)

@Repository:

Spring @Repository注释表示该类提供了Crud操作的机制。

您可以找到更多信息here

@RepositoryRestResource:

此注释为存储库提供RestController功能。这意味着您可以直接访问您的存储库。您可以进一步了解此here