java - 使用Spring data Rest @RepositoryRestResource 创建rest端点时是否需要注释@EnableMongoRepositories

标签 java spring spring-boot spring-data-mongodb spring-data-rest

我正在尝试使用 Spring Boot 指南来使用 @RepositoryRestResource 注释创建 Spring Data Rest 端点。我观察到,在指南中,他们没有指定我们使用除 @RepositoryRestResource 之外的任何其他注释。所以我所做的是:

public class Merchant{

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private long id;

    private String firstName;
    private String lastName;

    public String getFirstName() {
        return firstName;
    }

    public void setFirstName(String firstName) {
        this.firstName = firstName;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }
}

@RepositoryRestResource(collectionResourceRel = "account", path = "account")
public interface MerchantRepository extends MongoRepository<Merchant, String> {

    List<Person> findByLastName(@Param("name") String name);

}

只要我将所有内容都放在同一个包中,它似乎就可以工作。所以,我试图理解为什么即使我们没有使用通常用于为 CRUD 操作提供默认实现的注释 @EnableMongoRepositories 等,这仍然有效?从文档中可以明显看出,MongoRepository内部扩展了PagingAndSortingRepository接口(interface),而后者又扩展了CrudRepository接口(interface)。有人可以解释一下这是如何工作的吗?

最佳答案

当使用常规 Spring(不是 Spring Boot)应用程序时或不遵守 general recommendations for a Spring Boot application 时(将 @SpringBootApplication 注解的类放在 top-level package 中)那么您必须添加 @EnableMongoRepositories 注解。

如果您使用 Spring Boot 并遵循一般建议,则无需添加注释。 Spring Boot 通过在类路径上检测 Mongo 和 Spring Data MongoDB 来确定您显然想要使用它。请参阅MongoRepositoriesAutoConfiguration类(注意:这是一个 Spring Boot 类,而不是 Spring Data MongoDB 类)。

关于java - 使用Spring data Rest @RepositoryRestResource 创建rest端点时是否需要注释@EnableMongoRepositories,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56146773/

相关文章:

java - 如何使用处理通过 millis() 捕获毫秒值?

java - 使用 Spring 读取 SOAP 请求 header

java - 查询返回多条记录

python - 如何使用我的 eureka 服务器注册 python 微服务(spring boot)

java - AtomicXXX.lazySet(...) 就 happens before edges 而言

java - Gradle 下的 JUnit 5 具有多个源集

java - 按日期字段排序在 Spring Data JPA 中不起作用

spring-boot - Spring @Kafkalistener 自动提交偏移量或手动 : Which is recommended?

Spring Boot App - 无法引导运行

java - java中私有(private)类中公共(public)方法的范围 - 无包