如何打包基于弹簧的库以供重用?

时间:2013-10-01 12:28:06

标签: java spring

我有基于Spring网络的应用程序。现在我想将其部件重用于另一个项目。因此,我有两个问题:

  1. 将可重用库等功能打包的推荐方法是什么?内置应用程序上下文XML或JAR +额外XML的JAR文件?还有别的吗?
  2. 如何将这样的库合并到另一个基于Spring(web)的项目(不同的命名空间 - 包)中,以便例如@Autowired会有效吗?我想类路径上的简单JAR是不够的 - 如何引用lib的应用程序上下文等?还需要采取哪些其他措施?

2 个答案:

答案 0 :(得分:5)

我使用的方法只是确保应用程序上下文片段驻留在库jar文件中的一个众所周知的位置(我个人使用META-INF/spring)。所以我可能在名为META-INF/spring/common-security-context.xml

的文件中有一些常见的安全配置和bean

在您的客户端应用程序(使用该库的应用程序)中,您可以通过在应用程序上下文中导入类似下面的内容来包含所有共享库中的服务和bean:

<import resource="classpath*:META-INF/spring/*-context.xml" />

(注意类路径后面的星号)。这将从正在运行的应用程序可见的任何jar文件或类路径根中找到名称与META-INF/spring/*-context.xml模式匹配的文件,并将它们聚合到一个逻辑上下文中。根据需要调整通配符。

显然,如果你开始广泛使用它,你将需要一些策略来避免可能发生的bean /服务名称冲突。

答案 1 :(得分:1)

你应该使用某种包装来说明它所依赖的东西。一个流行的选择是使用Maven打包,提供解释依赖关系的pom.xml文件。然后,当你完成它时,你就会发布应用程序的Maven。

使用它时,您需要在应用程序弹簧配置中引用共享配置模板。您可以直接导入它:

<import resource="classpath*:/META-INF/path/to/otherAppContext.xml" />

这假设您确实想要共享弹簧上下文配置。如果您提供可重用的类(仅限),通常不需要共享上下文配置。