2017-10-21 130 views
1

Je souhaite implémenter un repo personnalisé avec Spring data mongodb. Application.java:Référentiel de données de ressort personnalisé 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()); 
    } 
} 

Mon référentiel personnalisé CustomerRepositoryCustom.java

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

mise en œuvre personnalisée CustomCustomerRepositoryImpl.java

public class CustomCustomerRepositoryImpl implements CustomerRepositoryCustom { 
     @Autowired 
     private MongoTemplate mongoTemplate; 

     @Override 
     public List<Customer> customMethod() { 
      return this.mongoTemplate.findAll(Customer.class); 
     } 

    } 

Code Structure

-Application.java 
    dal 
    model... 
    repository 
    -CustomCustomerRepositoryImpl.java 
    -CustomerRepositoryCustom.java 

Lorsque je tente de le construire, je reçois une erreur:

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

Répondre

3

Vous devez faire Spring au courant de votre dépôt. Pour une application de démarrage Spring vous pouvez faire cela en ajoutant cette annotation à votre application ...

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

.... ainsi dire Spring Boot où chercher les dépôts mongo et permettent d'étendre votre interface org.springframework.data.mongodb.repository.MongoRepository.

Par exemple:

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

Sinon, vous pouvez annoter votre CustomCustomerRepositoryImpl avec @Repository et veiller à ce qu'il est dans un paquet qui est balayé par Spring Boot.

+0

@Repository fonctionne correctement. Cependant @EnableMongoRepositories ("socketApp.dal.repository") ne fonctionne pas Chemin d'accès au fichier: C: \ Utilisateurs \ {utilisateur} \ Bureau \ spring-mongodb \ src \ main \ java \ socketApp \ dal \ repository – TomP