2017-10-21 50 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