2016-11-28 166 views
0

我正在学习Spring Boot,我试图制作一个非常简单的应用程序,它使用动态查询从MongoDB中获取数据。我使用Intellij作为我的IDE。Spring Mongo DB基于注释的配置

FILE:application.properties(资源文件夹中)

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); 
} 

FILE:Config.java

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

} 

FILE: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")); 

    } 
} 

当我运行该项目,我得到一个错误

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

这是什么我在这里失踪?为什么我的MyRepo bean没有创建,因为网上的大多数示例都这样做。

+0

删除@Autowired注释。当您使用上下文来实例化MyRepo bean时不需要。 – Veeram

+0

我删除了,仍然无法使用。 – Juvenik

+0

您无法自动装载静态字段。 – chrylis

回答

0

的问题是要注释的MyRepo在主类,请在下面将其删除:

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

如果有人可以给我一个简单的例子,在春季启动运行动态查询 与芒果。一些与上述相似的例子。或者 我怎样才能使上面的例子正确。

您可以看到工作示例here。并找到解释here