2017-08-11 24 views
0

我正在试验spring和MongoDB。 在我的项目中,我有一个存储库和一个具有预定方法的服务。 问题是,存储库没有自动装配,它始终为空。Spring引导mongoDB自动装线的空存储库

  • 的Autowire正常工作在主应用程序类(实现CommandLineRunner测试过)
  • 该服务由componentScan发现(调用构造函数)

我失去somethig?

目录

enter image description here

MachineApplication.java

@SpringBootApplication 
@EnableScheduling 
public class MachineApplication { 
    public static void main(String[] args) { 
     SpringApplication.run(MachineApplication.class, args); 
    } 
} 

Worker.java

@Service 
public class Worker { 

    @Autowired 
    private LineDataRepository lineDataRepository; 
    @Autowired 
    private LineRepository lineRepository; 
    ... 
    public Worker() { 
     System.out.println("--------------------------------"); 
     System.out.println(lineDataRepository);//null 
     System.out.println(lineRepository);//null 
    } 
} 

LineDataRepository

@Repository 
public interface LineDataRepository extends MongoRepository<LineData, String> { 
} 

回答

1

添加@EnableMongoRepositories到MachineApplication让它检测蒙戈库。

here

0

我想你还没有创建mongoDbFactorymongoTemplate豆,没有这个bean不连接到您的MongoDB进行。以下是配置:

@Configuration 
public class MongoConfiguration { 

    @SuppressWarnings("deprecation") 
    @Bean 
    public MongoDbFactory mongoDbFactory() throws Exception { 
     UserCredentials userCredentials = new UserCredentials("admin", "password"); 
     return new SimpleMongoDbFactory(new Mongo(), "myspring", userCredentials); 
    } 

    @Bean 
    public MongoTemplate mongoTemplate() throws Exception { 
     return new MongoTemplate(mongoDbFactory()); 
    } 
} 
相关问题