Spring 启动 mongoDB 自动装配空存储库
Spring boot mongoDB autowired null repository
我正在试验 spring 和 MongoDB。
在我的项目中,我有一个存储库和一个具有预定方法的服务。
问题是,存储库不会自动装配,它始终为空。
- Autowire 在主应用程序中正常工作 class(通过实施 CommandLineRunner 对其进行了测试)
- 服务被componentScan找到(调用构造函数)
我是不是遗漏了什么?
目录
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
我认为您还没有创建 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());
}
}
我正在试验 spring 和 MongoDB。 在我的项目中,我有一个存储库和一个具有预定方法的服务。 问题是,存储库不会自动装配,它始终为空。
- Autowire 在主应用程序中正常工作 class(通过实施 CommandLineRunner 对其进行了测试)
- 服务被componentScan找到(调用构造函数)
我是不是遗漏了什么?
目录
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
我认为您还没有创建 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());
}
}