【发布时间】:2014-12-27 09:25:09
【问题描述】:
我正在使用 spring boot 编写代码,它将 csv 作为输入并创建 mongodb 集合并将其插入到 mongodb。
目前我坚持在基于 Spring Boot 的代码中使用 mongodb。在 MongoRepository 接口上使用 save 方法时出现 NullPointerException。
这个问题可能是由于 application.yml 文件中的配置不正确 下面是 src/main/resources 目录下 application.yml 中 mongodb 的具体变化。
spring:
data:
mongodb.host: localhost
mongodb.port: 27017
mongodb.uri: mongodb://localhost/test
mongo.repositories.enabled: true
Application.java 文件如下:
@Configuration
@EnableMongoRepositories
@Import(RepositoryRestMvcConfiguration.class)
@EnableAutoConfiguration // Sprint Boot Auto Configuration
@ComponentScan(basePackages = "com.khoubyari.example")
public class Application extends SpringBootServletInitializer {
private static final Class<Application> applicationClass = Application.class;
private static final Logger log = LoggerFactory.getLogger(applicationClass);
public static void main(String[] args) {
SpringApplication.run(applicationClass, args);
}
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(applicationClass);
}
}
如果 Application.java 实现 CommandLineRunner 并在覆盖的方法 run 中编写 mongodb 插入特定代码,则代码工作正常。此代码可在此 URL 中找到: https://spring.io/guides/gs/accessing-data-mongodb/
但是,我的 Application.java 扩展了 SpringBootServletInitializer 类并覆盖了 configure(SpringApplicationBuilder application) 方法。请在上面查看我的 Application.java。
我需要在我的基于 Spring Boot 的项目的不同包中存在的实用程序类中使用相同的 db 特定代码(与我上面在 Application.java 类中提到的 URL 相同的代码)。
自定义仓库界面如下:
CustomRepository.java:
public interface CustomRepository extends MongoRepository<CsvPojo, String>{
}
在实用程序类中,我只想注入 CustomRepository 并使用 save 方法将创建的 CsvPojo 保存在 mongodb 中。但是我在执行行 customRepository.save(csvPojo); 时遇到 NullPointerException;
请推荐!如果需要其他信息,请告诉我!
问候, 肖比特
【问题讨论】:
-
首先为什么你
Application类扩展SpringBootServletInitializer?其次,请显示您用于自定义实用程序类的代码 -
您不能注入实用程序类(我怀疑该类不是弹簧管理的,或者您尝试注入
static字段)。同样在您的配置中,您可以删除@EnableMongoRepositories和@Import(RepositoryRestMvcConfiguration.class),当检测到相应的 Spring Data MongoDB 和 Spring Data Rest 时,Spring Boot 会自动添加它们。此外,如果您的Application课程在com.khoubyari.example包中,您可以执行@ComponentScan。
标签: mongodb spring-mvc jakarta-ee spring-data spring-boot