我有基于Spring网络的应用程序。现在我想将其部件重用于另一个项目。因此,我有两个问题:
@Autowired
会有效吗?我想类路径上的简单JAR是不够的 - 如何引用lib的应用程序上下文等?还需要采取哪些其他措施?答案 0 :(得分:5)
我使用的方法只是确保应用程序上下文片段驻留在库jar文件中的一个众所周知的位置(我个人使用META-INF/spring
)。所以我可能在名为META-INF/spring/common-security-context.xml
在您的客户端应用程序(使用该库的应用程序)中,您可以通过在应用程序上下文中导入类似下面的内容来包含所有共享库中的服务和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" />
这假设您确实想要共享弹簧上下文配置。如果您提供可重用的类(仅限),通常不需要共享上下文配置。