我定義一種網絡這樣創建自定義XML配置對象的網絡春
S1 ---- O1 ---- O2 ---- O3 ---- T1
\
+--- O4 ---- O5 ------------ T2
\
S2---+- O6 --+- O7 ------------ T4
/ /
S3-+ /
/
S4 ------+
凡
S
自定義XML配置是某種形式的數據源,如網絡插座O
是一個操作符處理所述數據T
是所述靶標或數據宿
這些元素表示使用XML塊這樣的:
<source name="S1" address="ws://example/1" type="websocket" dataType="double" />
<operator name="O6" type="threshold">
<input name="S1"/>
<input name="S2"/>
<input name="S3"/>
<property name="threshold" value="10.34" />
<property name="window" value="10.0" />
</operator>
<sink name="T1" type="database">
<input name="O3"/>
</sink>
的依賴關係的構造參數。我的例子操作O6
將有一個構造是這樣的:
class ThresholdOperator extends Operator<Boolean> {
public ThresholdOperator(
String name, // "O6"
List<DataSource> sources, // [S1, S2, S3]
double threshold, // 10.34
double window) { // 10.0
...
有可能是這個類有不同的構造函數的參數的多個實例。一個類可能有多個構造函數。基類的類型參數是輸出類型。
type
屬性決定了具體的類必須被實例化。源的屬性dataType
決定應該注入哪種類型的轉換器(此處爲String
到Double
)。
要創建實例我需要繪製出一個依賴關係圖並開始實例化沒有其他對象從我的圖形作爲依賴關係(在這種情況下的來源),然後我會創建的對象只依賴於創建的對象第一步等等。
因此,我基本上將爲我的特殊用例重新創建類似Spring的東西。有沒有辦法在我的情況下利用Spring創建和連接對象?有點粗糙的黑客可能會將我的xml配置轉換爲beans.xml。但也許有更好的方法使用BeanFactory
或類似的。或者是否有可能直接創建Spring元模型?
我使用的是Spring 4.3,但是Spring 5的RC可能是一個選項,如果它有幫助的話。
我已經添加了另一種可能的解決方案,可能對您的情況有用。查看我的帖子更新。 –
您可能想看看[tag:apache-camel],因爲您似乎爲某些端點構建了一些處理路由和指令。 –