私はSpringブートとSpringのデータMongoDBを使って小さなテストアプリケーションを開発したいと思います。だから、この場合、私はデフォルトの設定(localhost:27017/testデータベースのような)を使い、私はスプリングガイド(https://spring.io/guides/gs/accessing-data-mongodb/)に従おうとします。春のブートデータMongoDB - リポジトリがnull
私はこのように自分のアプリケーションを起動します。
@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();
}
}
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);
}
}
をprojectRepository.deleteAll()文が実行されると、私は国連にNullPointerExceptionを受け取ります。詳細については、ProjectRepositoryインタフェース以下
:
public interface ProjectRepository extends MongoRepository<Project, String>
{
}
そして、私のパッケージ構造は次のとおりです。 com.test.dummy Application.java com.test.dummy.components DummyClass.java コム。 Project.java com.test.dummy.repositories ProjectRepository.java
test.dummy.domainあなたはunderstaに私を助けることができます私のエラー?
注:私はあなたがSpringコンテキスト(new DummyClass()
)の外に、あなたのDummyClassをインスタンス化し、あなたのApplication.run()
メソッド内で3.2
さて、あなたのアプリケーション#のrunメソッドがweired見えます。以前これを見たことはありません。削除して再試行できますか? 編集:これはうんざりです。新しいDummyClass()でオブジェクトを作成しています。これはIoCとDIの原則と矛盾します – smsnheck
ありがとうございます、あなたは完全に正しいです。たわごとは、砥石に鼻を当てたときに起こる... ;-) –