我定义一种网络这样创建自定义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],因为您似乎为某些端点构建了一些处理路由和指令。 –