基于spring boot的项目中的spring data mongodb配置
Posted
技术标签:
【中文标题】基于spring boot的项目中的spring data mongodb配置【英文标题】:spring data mongodb configuration in spring boot based project 【发布时间】: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
。
【参考方案1】:
在 spring rest 控制器中调用 save 方法解决了这个问题,而不是从实用程序类调用。
我只是在控制器中注入 CustomRepository 接口并使用保存方法!
我在学习https://github.com/khoubyari/spring-boot-rest-example的“关于服务”部分后得到了解决方案
我需要在 Spring Boot 中进行更多探索,但无论如何,经过以上发布的努力,问题都得到了解决!
【讨论】:
以上是关于基于spring boot的项目中的spring data mongodb配置的主要内容,如果未能解决你的问题,请参考以下文章
IntelliJ IDEA 中的 Spring Boot 项目在重启后停止工作
一款基于 Spring Boot 开发的 OA 项目,已开源,真香..