自定义 MongoDB Spring 数据存储库
Posted
技术标签:
【中文标题】自定义 MongoDB Spring 数据存储库【英文标题】:Custom MongoDB spring data repository 【发布时间】:2018-04-02 10:44:26 【问题描述】:我想用 Spring 数据 mongodb 实现自定义 repo。 应用程序.java:
@SpringBootApplication
public class Application implements CommandLineRunner
@Autowired
private CustomerRepositoryCustom repo;
public static void main(String[] args)
SpringApplication.run(Application.class, args);
@Override
public void run(String... args) throws Exception
System.out.println(this.repo.customMethod());
我的自定义存储库 CustomerRepositoryCustom.java
public interface CustomerRepositoryCustom
List<Customer> customMethod();
自定义实现CustomCustomerRepositoryImpl.java
public class CustomCustomerRepositoryImpl implements CustomerRepositoryCustom
@Autowired
private MongoTemplate mongoTemplate;
@Override
public List<Customer> customMethod()
return this.mongoTemplate.findAll(Customer.class);
代码结构
-Application.java
dal
model...
repository
-CustomCustomerRepositoryImpl.java
-CustomerRepositoryCustom.java
当我尝试构建它时,我得到一个错误:
**Description**:
Field repo in socketApp.Application required a bean of type 'socketApp.dal.repository.CustomerRepositoryCustom' that could not be found.
**Action**:
Consider defining a bean of type 'socketApp.dal.repository.CustomerRepositoryCustom' in your configuration.
【问题讨论】:
【参考方案1】:您必须让 Spring 了解您的存储库。对于 Spring Boot 应用程序,这通常通过将此注释添加到您的应用程序来完成...
@EnableMongoRepositories("com.package.path.to.repository")
.... 从而告诉 Spring Boot 在哪里寻找 Mongo 存储库,然后让你的接口扩展 org.springframework.data.mongodb.repository.MongoRepository
。
例如:
public interface CustomerRepositoryCustom extends MongoRepository
List<Customer> customMethod();
或者,您可以使用 @Repository
注释您的 CustomCustomerRepositoryImpl
并确保它位于 Spring Boot 扫描的包中。
【讨论】:
@Repository 工作正常。但是 @EnableMongoRepositories("socketApp.dal.repository") 不起作用 文件路径:C:\Users\user\Desktop\spring-mongodb\src\main\java\socketApp\dal\repository以上是关于自定义 MongoDB Spring 数据存储库的主要内容,如果未能解决你的问题,请参考以下文章
使用 MongoDB 获取存储的用户凭据的 JAVA Spring 自定义身份验证