Beanを初期化し、特定のBeanにJPAリポジトリを注入するのに問題があります。このインタフェースを実装Springブートで抽象クラスを継承するクラスにBeanを挿入していません
public interface KeyService {
Store getKeyStore();
Store getTrustStore();
}
とabstract
クラス:
public abstract class DefaultKeyService implements KeyService {
abstract KeyRecord loadKeyStore();
abstract KeyRecord loadTrustStore();
/* rest omitted... */
}
とベースclass
延びるinterface
キーサービスの定義があり、それが動作しない理由を全くわからない...
抽象クラス:
@Service
public class DatabaseKeyService extends DefaultKeyService {
@Autowired
private KeyRecordRepository keyRecordRepository;
@Override
protected KeyRecord loadKeyStore() {
return extract(keyRecordRepository.findKeyStore());
}
@Override
protected KeyRecord loadTrustStore() {
return extract(keyRecordRepository.findTrustStore());
}
/* rest omitted... */
}
bean
初期化:
public interface KeyRecordRepository extends Repository<KeyRecord, Long> {
KeyRecord save(KeyRecord keyRecord);
@Query("SELECT t FROM KeyRecord t WHERE key_type = 'KEY_STORE' AND is_active = TRUE")
Iterable<KeyRecord> findKeyStore();
@Query("SELECT t FROM KeyRecord t WHERE key_type = 'TRUST_STORE' AND is_active = TRUE")
Iterable<KeyRecord> findTrustStore();
KeyRecord findById(long id);
}
質問:keyRecordRepository
DatabaseKeyService
内のクラスは、まだヌルである理由いくつかの理由がある
@Bean
public KeyService keyService() {
return new DatabaseKeyService();
}
これはKeyRecordRepository
リポジトリですか?本当に私はなぜこのフィールドだけが注入されていないか分かりません。他の豆とリポジトリは完全にうまく動作します。
親クラスは抽象クラスなので問題ありませんか?
注釈をあなたの設定ファイルに次に
DatabaseKeyService
に@Component –とKeyRecordRepositoryの実装を、それを作成するコンストラクタ・インジェクションを使用して好む 'KeyRecordRepository'は何の実装を持っていません。 – Artegon