Spring 3 を使用する JPA アプリケーションがあります。 @PostConstuct を使用して、特定の施設コードでデータベースを初期化しようとしています。@PostConstuct メソッドを持つクラス内にコードを永続化すると、機能します。コードを永続化するために 2 番目のクラスを呼び出すと、失敗します。これは @Autowired アノテーションの使用方法と関係がありますか?
これは Preloader クラスの一部です。
public class Preloader {
@Autowired
private FacilityService service;
@PostConstruct
public void init() {
loadCodeSet();
}
private void loadCodeSet() {
// This works
Facility created = new Facility();
created.setCode("Uni");
created.setDescription("University");
Facility returned = service.create(created);
// This fails
CodeSetLoader cl = new CodeSetLoader();
l.load();
}
これは、ロード クラスの一部です。
public class CodeSetLoader {
@Autowired
private FacilityService facilityService;
public void load() {
loadFacilities();
}
private void loadFacilities() {
Facility test = new Facility();
test.setCode("UNI");
test.setDescription("University");
Facility returned = facilityService.create(test);
}
例外には以下が含まれます。
Caused by: java.lang.NullPointerException
at util.CodeSetLoader.loadFacilities(CodeSetLoader.java:42)
at util.CodeSetLoader.load(CodeSetLoader.java:24)
at util.Preloader.loadCodeSet(Preloader.java:68)
at util.Preloader.init(Preloader.java:32)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:601)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleElement.invoke(InitDestroyAnnotationBeanPostProcessor.java:344)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor$LifecycleMetadata.invokeInitMethods(InitDestroyAnnotationBeanPostProcessor.java:295)
at org.springframework.beans.factory.annotation.InitDestroyAnnotationBeanPostProcessor.postProcessBeforeInitialization(InitDestroyAnnotationBeanPostProcessor.java:130)
... 22 more
誰かがこれを手伝ってくれることを願っていますか?