我正在編寫帶有彈簧引導的代碼,它將csv作爲輸入並創建mongodb集合並將其插入到mongodb中。彈簧數據mongodb配置在基於spring boot的項目中
目前我堅持在基於spring啓動的代碼中使用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和寫入mongodb的插入overrided方法運行特定代碼,代碼工作正常。此代碼可在以下URL中找到:
但是,我的Application.java擴展了SpringBootServletInitializer類並覆蓋了configure(SpringApplicationBuilder應用程序)方法。請看上面的我的Application.java。
我需要在我的基於spring引導項目的不同包中存在的工具類中使用相同的db特定代碼(如同上面在Application.java類中提到的那樣的代碼)。
自定義庫界面如下:
CustomRepository.java:
public interface CustomRepository extends MongoRepository<CsvPojo, String>{
}
在實用工具類,我只是想注入CustomRepository和使用Save方法保存創建CsvPojo在MongoDB中。但我在執行行customRepository.save(csvPojo)時引發NullPointerException;
請建議!如果需要其他信息,請告訴我!
問候, Shobhit
首先你爲什麼'Application'類擴展'SpringBootServletInitializer'?其次,請顯示您用於自定義實用程序類的代碼 – geoand 2014-10-31 06:50:43
您無法注入實用程序類(我懷疑該類不是彈簧管理的,或者您有試圖注入的「靜態」字段)。同樣在你的配置中,你可以刪除'@EnableMongoRepositories'和'@Import(RepositoryRestMvcConfiguration.class)',當檢測到相應的Spring Data MongoDB和Spring Data Rest時,Spring Boot自動添加這些。另外,如果您的'Application'類位於'com.khoubyari.example'包中,您可以執行'@ ComponentScan'。 – 2014-10-31 08:15:52