Java 如何打包基于spring的库以便重用?

Java 如何打包基于spring的库以便重用?,java,spring,Java,Spring,我有一个基于spring web的应用程序。现在我想将它的部分也用于另一个项目。因此,我有两个问题: 建议使用什么方法来打包这些功能,如可重用库?内部包含应用程序上下文XML的JAR文件还是JAR+额外XML?还有别的吗 如何将这样的库合并到另一个基于Spring(web)的项目(不同的名称空间-包)中,以便例如@Autowired能够工作?我想类路径上的简单JAR是不够的——如何引用lib的应用程序上下文等?还需要采取哪些其他步骤 你应该使用某种包装来说明它所依赖的东西。一个流行的选择是使用打

我有一个基于spring web的应用程序。现在我想将它的部分也用于另一个项目。因此,我有两个问题:

  • 建议使用什么方法来打包这些功能,如可重用库?内部包含应用程序上下文XML的JAR文件还是JAR+额外XML?还有别的吗
  • 如何将这样的库合并到另一个基于Spring(web)的项目(不同的名称空间-包)中,以便例如
    @Autowired
    能够工作?我想类路径上的简单JAR是不够的——如何引用lib的应用程序上下文等?还需要采取哪些其他步骤

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

    在使用它时,您需要在apps spring配置中引用共享配置模板。您可以直接导入它:

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

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

    我使用的方法只是确保应用程序上下文片段位于库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/服务名称冲突。

    谢谢,基本上您都建议在JAR中打包上下文XML,然后导入它。。。谢谢你tip@sodik如果需要,我们都提供了相同的方法。但是,正如我所说的,通常不需要真正共享xml配置,只需要共享它们自己的类?但是你为什么不想使用DI呢?如何处理类之间的依赖关系?