0

的集合我有一個抽象類DI不注抽象類

public abstract class SecSchema { 
........ 
} 

我有一些子類。我有接口的所有實現的以下服務。

@Service 
public class SecSchemaService { 

@Autowired 
Collection<SecSchema> secSchemas; 
....getters and setters.... 
} 

當我做DI在控制器:

@Autowired 
private SecSchemaService secSchemaService; 

它工作正常。 不過我還有一個抽象類:

public abstract class Currecny { 

@Autowired 
SecSchemaService secSchemaService; 
...... } 

在子類中,我有以下代碼:

@Component 
public class USD extends Currecny implements PreValidateListener { 
@PostConstruct 
public void registerListeners() { secSchemaService.getSecSchemas(); } 

我有NullPointerException異常,因爲收集

secSchemaService.secSchemas

爲空。 我不知道爲什麼,但收集課後美元初始化。我試圖使用註釋@Dependson,但它沒有幫助。 如果我注入

@Autowired 
Collection<SecSchema> secSchemas; 

在課上美元它工作正常。所以它不工作只有當我注入包裝的收集SecSchemaService

回答

0

我已經有很大的樂趣和嘗試使用尚未初始化的其他豆的後期構造遊戲。

讓它工作的一個有保證的方式是忘記post構造,並有一個爲ContextRefreshedEvent實現ApplicationListener的bean,然後在那裏做最後的初始化。你可以在那裏注入任何現有的bean,並做任何你想要的手動佈線。不理想,但工作正常。

0

還有一個美元的班級孩子,它被標記爲@Component。 這是問題所在。只有層次結構中的最後一個類必須標記爲@Component,因爲我只需要這個類。