2017-10-21 48 views
1

我想用Spring数据mongodb实现自定义回购。 Application.java:自定义MongoDB弹簧数据存储库

@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. 

回答

3

你必须让你的资料库的春天知道。对于春季启动应用程序,这是通常通过添加此批注您的应用程序做...

@EnableMongoRepositories("com.package.path.to.repository") 

....从而告诉春季引导到哪里寻找蒙戈库,然后让你的界面扩展org.springframework.data.mongodb.repository.MongoRepository

例如:

public interface CustomerRepositoryCustom extends MongoRepository { 
    List<Customer> customMethod(); 
} 

或者,你可以注解你CustomCustomerRepositoryImpl@Repository并确保它是在由春启动扫描的包。

+0

@Repository工作正常。但 @EnableMongoRepositories(“socketApp.dal.repository”)不起作用 文件路径:C:\ Users \ {user} \ Desktop \ spring-mongodb \ src \ main \ java \ socketApp \ dal \ repository – TomP