[英]Spring Boot Data MongoDB - Repository is null
I want to develop a little test application using Spring Boot and Spring Data MongoDB. 我想使用Spring Boot和Spring Data MongoDB开发一个小的测试应用程序。 So, in this case, I use default configuration (like localhost:27017/test database) and I try to follow the spring guide ( https://spring.io/guides/gs/accessing-data-mongodb/ ).
因此,在这种情况下,我使用默认配置(例如localhost:27017 / test数据库),然后尝试遵循spring指南( https://spring.io/guides/gs/accessing-data-mongodb/ )。
I launch my application like this: 我这样启动我的应用程序:
@SpringBootApplication
public class Application implements CommandLineRunner {
private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... strings) throws Exception {
(new DummyClass()).load();
}
}
The DummyClass is as following: DummyClass如下:
@org.springframework.stereotype.Component
@ConfigurationProperties(prefix="dummy")
public class DummyClass {
private static String url;
private List<Project> projects;
@Autowired
private ProjectRepository projectRepository;
public void setUrl(String url) {
DummyClass.url = url;
}
@Override
public void load() {
// (...) creating some project objects
projectRepository.deleteAll();
projectRepository.save(this.projects);
}
}
When the projectRepository.deleteAll() statement is executed, I receive un NullPointerException. 当执行projectRepository.deleteAll()语句时,我收到un NullPointerException。
For information, below the ProjectRepository interface: 有关信息,请在ProjectRepository界面下面:
public interface ProjectRepository extends MongoRepository<Project, String>
{
}
And my package structure is: com.test.dummy Application.java com.test.dummy.components DummyClass.java com.test.dummy.domain Project.java com.test.dummy.repositories ProjectRepository.java 我的包结构是:com.test.dummy Application.java com.test.dummy.components DummyClass.java com.test.dummy.domain Project.java com.test.dummy.repositories ProjectRepository.java
Can you help me to understand my error? 您能帮我理解我的错误吗?
Note: I use Spring Boot 1.4.1 and Mongo 3.2 注意:我使用Spring Boot 1.4.1和Mongo 3.2
Inside your Application.run()
method you instantiate your DummyClass outside of the Spring context ( new DummyClass()
). 在
Application.run()
方法中,您可以在Spring上下文之外( new DummyClass()
)实例化DummyClass。 This way the 这样
@Autowired
private ProjectRepository projectRepository;
is not instantiated correctly. 没有正确实例化。
You should inject your DummyClass
via Spring and not create a new instance of it via its constructor. 您应该通过Spring注入
DummyClass
,而不是通过其构造函数创建它的新实例。
Example: 例:
@SpringBootApplication
public class Application implements CommandLineRunner {
private static final Logger LOGGER = LoggerFactory.getLogger(Application.class);
@Autowired
DummyClass dummyClass;
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Override
public void run(String... strings) throws Exception {
dummyClass.load();
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.