Spring boot mongoDB自动连线空存储库

Spring boot mongoDB自动连线空存储库,spring,mongodb,spring-boot,autowired,Spring,Mongodb,Spring Boot,Autowired,我正在试验spring和MongoDB。 在我的项目中,我有一个存储库和一个具有预定方法的服务。 问题是,存储库没有自动连接,它总是空的 Autowire在主应用程序类中正常工作(通过实现CommandLineRunner对其进行了测试) componentScan找到服务(调用构造函数) 我错过什么了吗 目录 @Repository public interface LineDataRepository extends MongoRepository<LineData, String

我正在试验spring和MongoDB。 在我的项目中,我有一个存储库和一个具有预定方法的服务。 问题是,存储库没有自动连接,它总是空的

  • Autowire在主应用程序类中正常工作(通过实现CommandLineRunner对其进行了测试)
  • componentScan找到服务(调用构造函数)
我错过什么了吗

目录

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

MachineApplication.java

@SpringBootApplication
@EnableScheduling
public class MachineApplication {
    public static void main(String[] args) {
        SpringApplication.run(MachineApplication.class, args);
    }
}
@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
    }
}
Worker.java

@SpringBootApplication
@EnableScheduling
public class MachineApplication {
    public static void main(String[] args) {
        SpringApplication.run(MachineApplication.class, args);
    }
}
@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> {
}
@存储库
公共接口LineDataRepository扩展了MongoRepository{
}

@EnableMongoRepositories
添加到MachineApplication,让它检测Mongo存储库


请参阅我认为您还没有创建
mongoDbFactory
mongoTemplate
bean,没有这个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());
    }
}