【问题标题】:What is the difference between @RepositoryRestController and the @Repository annotations?@RepositoryRestController 和 @Repository 注释有什么区别?
【发布时间】:2019-01-25 12:47:38
【问题描述】:

我想知道使用注释@RepositoryRestController@Repository 之间到底有什么区别,因为我都试过了,我发现完全没有区别!

我尝试了以下方法:

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

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

所以当我尝试 : /movies 在这两种方法中我得到相同的结果。

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

【问题讨论】:

    标签: java spring spring-boot spring-data


    【解决方案1】:

    @Repository

    @Repository 是一个原型接口,用于将最初由域驱动设计 (Evans, 2003) 定义的存储库定义为“一种封装存储、检索和搜索行为的机制,模拟对象集合”

    此注解也可作为@Component 的特化,允许通过类路径扫描自动检测实现类。

    @RepositoryRestResource

    @RepositoryRestResource 告诉Spring Data REST 将您的存储库公开为 REST 端点。检查文档的relevant 部分。


    如果您想利用 Spring Data REST 的设置、消息转换器、异常处理等功能为特定资源编写自定义处理程序,您可以使用 @RepositoryRestController(而不是标准 Spring MVC @Controller 或 @987654328 @注解)。请参阅文档的relevant 部分。

    【讨论】:

    • @Repository 的Javadoc 中,您在哪里找到有关Spring Data 或接口的任何提示?相反,该注解与 Spring Data 无关,对 Spring Data 接口没有任何影响。来自 Javadoc:As of Spring 2.5, this annotation also serves as a specialization of @Component
    【解决方案2】:

    它在有或没有注释的情况下工作的原因是,如果您将 Spring Boot 与 Spring Data REST 一起使用,在这种情况下会激活自动配置,它会自动将所有 Spring Data 接口公开为 REST 资源。您可以在here 中找到此配置的源代码,并在reference documentation 中找到更多关于自定义它的可能性。

    【讨论】:

      【解决方案3】:

      @Repository:

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

      您可以找到更多信息here

      @RepositoryRestResource:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-01-21
        • 2012-11-10
        • 1970-01-01
        • 2014-02-28
        • 2011-10-13
        • 2018-11-23
        • 2018-01-14
        相关资源
        最近更新 更多