申明:本人对java了解不太深,发表的观点可能有不当之处,如有之请不吝赐教。
service locator模式在老早的j2ee中就被提出来,原因是在一个程序中有大量服务(service)时,使用者调用相关的服务组件就显得不那么容易,既不易寻找,又需要自己创建实例,既耗时又没有任何技术含量。service locator模式的出现解决了上述问题,它将一组服务甚至所有服务交给一个或者若干个service locator,由这些service locator来找寻服务并完成初始化的工作,调用者只需要知道使用哪个service locator即可,这样就大大简化了寻找并实例化服务的工作。
传统的j2ee中的 service locator模式类得调用关系如下图:
但是今天我们不谈j2ee里的service locator,因为自从spring的诞生就意味着java程序在向轻量级框架发展,所以,这里要谈一下如何用spring技术来实现上面的service locator模式。
我们用Spring来实现调用关系如下图(第一次画,画的可能不太对)
此图中ServiceLocator依赖spring容器来生成services,并由一个SpringServiceFactory来管理这些生成的Service,当使用时,只要通过ServiceLocator来查找相应的Service实例.
下面来具体介绍如何来写这样一个jar包。
先用eclipse建立一个maven工程。
目录结构如下:
pom.xml内容如下: