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

sod*_*dik 8 java spring

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

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

dar*_*end 5

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

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

<import resource="classpath*:META-INF/spring/*-context.xml" />
Run Code Online (Sandbox Code Playgroud)

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

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


eis*_*eis 2

您应该使用某种包装来说明它所依赖的内容。一个流行的选择是使用Maven打包,提供解释依赖关系的 pom.xml 文件。然后,当您完成应用程序时,您可以对其进行 Maven 发布。

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

<import resource="classpath*:/META-INF/path/to/otherAppContext.xml" />
Run Code Online (Sandbox Code Playgroud)

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