【问题标题】:spring data mongodb configuration in spring boot based project基于spring boot的项目中的spring data mongodb配置
【发布时间】: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


【解决方案1】:

在 spring rest 控制器中调用 save 方法解决了这个问题,而不是从实用程序类调用。

我只是在控制器中注入 CustomRepository 接口并使用保存方法!

我在学习https://github.com/khoubyari/spring-boot-rest-example的“关于服务”部分后得到了解决方案

我需要在 Spring Boot 中进行更多探索,但无论如何,经过以上发布的努力,问题都得到了解决!

【讨论】:

    猜你喜欢
    • 2014-11-17
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 2017-01-03
    • 2015-04-29
    • 2020-08-04
    • 2019-07-28
    • 1970-01-01
    相关资源
    最近更新 更多