2016-11-28 8 views
0

Ich lerne Spring Boot und ich versuche, eine sehr einfache App zu machen, die Daten von Mongo DB abruft, indem Sie dynamische Abfragen verwenden. Ich benutze Intellij als meine IDE.Spring Mongo DB mit Annotation-basierten Konfigurationen

FILE: application.properties (innen Ressourcenordner)

spring.mongo.host=127.0.0.1 
spring.mongo.port=27017 
spring.mongo.databaseName=spring 

FILE: person.java

@Document (collection = "person") 
public class Person { 
    @Id 
    String id; 
    int age; 
    String name; 

    public String getId() { 
     return id; 
    } 

    public void setId(String id) { 
     this.id = id; 
    } 

    public int getAge() { 
     return age; 
    } 

    public void setAge(int age) { 
     this.age = age; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

FILE: MyRepo.java

@Repository 
public interface MyRepo extends PagingAndSortingRepository<Person, String> { 
    public List<Person> findAllByName(String name); 
} 

DATEI: Config.java

@Configuration 
@EnableMongoRepositories(basePackages = {"mongo.customQueries"}) 
public class Config { 

} 

DATEI: Main.java

public class Main { 
    @Autowired 
    public static MyRepo myRepo; 
    public static void main(String[] args) { 
     ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); 
     MyRepo myRepo = context.getBean(MyRepo.class); 
     System.out.println(myRepo.findAllByName("Avishek")); 

    } 
} 

Als ich das Projekt ausführen, ich einen Fehler

Exception in thread "main" org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [mongo.customQueries.MyRepo] is defined 

Was es ist dass ich hier vermisse? Warum wird meine MyRepo-Bean nicht erstellt, da die meisten Beispiele im Netz dies tun?

+0

@Autowired Annotation entfernen. Wird nicht benötigt, wenn Sie Kontext verwenden, um MyRepo-Bean zu instanziieren. – Veeram

+0

Ich habe entfernt, immer noch nicht funktioniert. – Juvenik

+0

Sie können statische Felder nicht automatisch aktivieren. – chrylis

Antwort

0

Das Problem ist, dass Sie die MyRepo in der Hauptklasse in Annotations mögen, bitte entfernen, wie unten:

public class Main { 
    public static void main(String[] args) { 
     ApplicationContext context = new AnnotationConfigApplicationContext(Config.class); 
     MyRepo myRepo = context.getBean(MyRepo.class); 
     System.out.println(myRepo.findAllByName("Avishek")); 

    } 
} 
0

Wenn jemand könnte mir nur ein einfaches Beispiel dynamische Abfragen im Frühjahr Boot laufen mit Mongo. Einige Beispiele ähnlich wie oben. Oder Wie kann ich das obige Beispiel korrigieren.

Sie können Arbeitsbeispiel here sehen. Und finden Sie Erklärungen here.