【发布时间】:2018-09-24 19:54:51
【问题描述】:
我有以下场景:
将会有一个 Java 语言测试平台系统,由多个“服务”组成,这些“服务”通过相互传递消息进行协作。服务实现旨在是通用的,即其中不包含特定的“业务逻辑”。就测试平台而言,能够创建各种服务集合并在外部配置(如果可能)非常重要。
服务本身不知道任何其他服务的存在。每个服务只订阅它期望接收信息的主题,并发布它向任何等待的订阅者发送信息的主题。通过仔细配置,就可以模拟数据流图。
该计划是通过提供描述设置订阅者(阅读者)和发布者(作者)所需信息的配置信息来配置给定的服务实例。配置信息可能包括其他与发布/订阅无关的属性。
下面是一个可能的例子:
注意:选择 XML 作为示例只是因为它很容易阅读并允许结构化数据。
<service>
<name>Service A</name>
<service-id>service ID</service-id>
<publish>
<per-second>5</per-second>
<topic>
<name>Topic 1</name>
<class>org.xyz.Topic1</class>
<!-- override 5/sec rate -->
<per-second>10</per-second>
</topic>
<topic>
<name>Topic 2</name>
<class>org.xyz.Topic2</class>
</topic>
</publish>
<subscribe>
<topic>
<name>Topic 3</name>
<class>org.xyz.Topic3</class>
</topic>
</subscribe>
</service>
<service>
<name>Service B</name>
<service-id>service ID</service-id>
<publish>
<per-second>30</per-second>
<topic>
<name>Topic 3</name>
<class>org.xyz.Topic3</class>
</topic>
</publish>
<subscribe>
<topic>
<name>Topic 2</name>
<class>org.xyz.Topic2</class>
</topic>
</subscribe>
</service>
...
我想使用 Spring 框架来帮助配置这些服务。 注意:我对 Spring 很陌生,目前正在阅读 Spring in Action(和其他资源)以自学。
我想知道的是:我如何将配置信息“注入”到某种控制器或工厂,然后使用它来创建服务集合并为它们提供必要的信息来创建阅读器和他们将用来接收和发送消息的编写器?
从我目前所读到的内容来看,Spring 对于依赖注入和“bean 布线”来说似乎是非常强大的 WRT,但我对可以(和不能)做什么以及如何去做还不够了解.
我不偏爱 Spring 是由 Java 还是 XML 配置的。我只是使用 XML,因为它易于组合,允许数据结构化,并且似乎可以在任何地方使用。如果以不同的方式指定配置更有意义,请告诉我。
给定服务如何处理事件(即接收特定消息)以可能发送消息“响应”或采取其他行动,这是本问题范围之外的主题。我正在研究如何做到这一点 - 主要是基于规则的处理。如果有人有建议,我很乐意看看。
【问题讨论】:
标签: java spring dependency-injection config