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接口。有人可以解释一下这是如何工作的吗?
当使用常规 Spring(不是 Spring Boot)应用程序或不遵守Spring Boot 应用程序的一般建议(将带@SpringBootApplication注释的类放在顶级包中)时,您必须添加@EnableMongoRepositories注释。
如果您使用 Spring Boot 并遵循一般建议,则无需添加注释。Spring Boot 通过在类路径上检测 Mongo 和 Spring Data MongoDB 来确定您显然想要使用它。请参阅MongoRepositoriesAutoConfiguration该类(注意:这是一个 Spring Boot 类,而不是 Spring Data MongoDB 类)。
| 归档时间: |
|
| 查看次数: |
13101 次 |
| 最近记录: |