1. 程式人生 > 其它 >一個介面多個實現類,如何呼叫哪個實現類的方法

一個介面多個實現類,如何呼叫哪個實現類的方法

優化前部分程式碼:

每張報表對應一個task,定時任務中使用 @Autowired 注入。後期報表增加,@Autowired 會越來越多。

優化過程:

主要思路: 提供一個公共的介面,每張報表實現該介面。定時任務從spring容器中獲取到對應報表實現類的bean,並使用該公共介面接收。呼叫介面方法即可。

1、公共介面
2、介面實現類

每張報表一個實現類,均實現 BaseTask 介面。

3、呼叫:

獲取 spring 容器中介面的具體實現 bean。使用 ApplicationContextAware 介面。

ApplicationContextAware 介面:
spring 容器在初始化時,如果Spring配置檔案中所定義的Bean實現了該介面,那麼載入時會呼叫 setApplicationContext(ApplicationContext applicationContext) throws BeansException 方法,獲得ApplicationContext物件。通過ApplicationContext物件就可以獲取具體的實現類。

總結:

獲取一個介面具體哪個實現類的方式
1、new 一個具體的介面實現類物件。
2、@Autowired 注入具體實現類。
3、使用 @Resource 註解指定實現類名稱。

 4、@Qualifier 指定

 5、ApplicationContextAware 介面