我有一个定义这样的网络的自定义XML配置
S1 ---- O1 ---- O2 ---- O3 ---- T1
\
+--- O4 ---- O5 ------------ T2
\
S2---+- O6 --+- O7 ------------ T4
/ /
S3-+ /
/
S4 ------+
哪里
S
是某种数据源,例如Web套接字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。
看看StaticApplicationContext。在文档中指出它是:
主要用于测试。
...但是它是成熟的应用程序上下文,支持编程性bean注册。
您可以阅读特定于域的xml,并在里面基于它定义bean StaticApplicationContext
。
这篇博客文章可以为您提供有关如何使用StaticApplicationContext
引用和构造函数args定义bean的想法。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句