Spring 启动 mongoDB 自动装配空存储库

Spring boot mongoDB autowired null repository

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

我是不是遗漏了什么?

目录

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> {
}

@EnableMongoRepositories 添加到 MachineApplication 以让它检测 Mongo 个存储库。

here

我认为您还没有创建 mongoDbFactorymongoTemplate 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());
    }
}