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

Ana*_*han 2 java spring spring-data-rest spring-data-mongodb spring-boot

我正在尝试使用 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);

}
Run Code Online (Sandbox Code Playgroud)

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

M. *_*num 9

当使用常规 Spring(不是 Spring Boot)应用程序或不遵守Spring Boot 应用程序的一般建议(将带@SpringBootApplication注释的类放在顶级包中)时,您必须添加@EnableMongoRepositories注释。

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