<providers>标签定义了jms bus相关信息,采用什么产品,以及bus对应的queue等信息,以便在 <service>部分进行定义相关的listener到jms bus上面。
在 <actions>中,指定到该bus上面的信息,提供处理入口。
和EJB(Message Drivern Bean)做法相似,但不同之处,
actions部分,通过元数据方式提取了进行处理的方案,封装了可变性的处理方案,对于编程来说,
是一种简化。
MDB需要附加一系列的操作才能达到类似目的。
这种针对可变部分,采用元数据(MetaData)定义封装,应该成为以后的控制可变部分的主流手段。
比如对于WebService,通过WSDL文件进行定义接口,WSDL文件内容也属于元数据范畴。
对于SOA中的服务编排,比如BPEL,也是通过元数据方式定义流程,具体服务可以随便变化,但不会增加很大的麻烦,远比hard code灵活应变。
这就是元数据封装的好处。
针对系统中的可变部分,应用元数据定义,然后根据实际情况,对元数据进行分析,采用一定手段,那么整个系统都是可控的。
Spring Framework通过元数据定义文件spring-bean.xml,封装了针对接口的可变实现,保证了不需要更改代码,只需要提供一种实现即可更换现有的功能。封装了变化,这个才是Spring Framework的核心思想。
相信元数据会更加应用广泛,因为大家都希望能够控制或封装变化部分。
有一点需要说明,只要在元数据中定义了,就能够处理和使用。
元数据定义可能在项目的开发设计阶段增加一些麻烦,但其优越性在系统上线之后,随着软件的运行,优越性越大。比如,在系统之间进行交互的时候,元数据就可以作为参考标准。
有一种想法:元数据可能导致Software Factory的诞生.