我有两个春季项目。两者都是当前的portlet。
我想拿一个并将其转换为jar并将其作为依赖(使用maven)添加到另一个然后调用代码)
关于步骤的任何建议都会很棒。
我已经尝试过,虽然所有内容(包含上下文)都在我的jar中打包,但是当从使用jar的portlet中调用类时,应用程序上下文未加载/工作
Current jar structure
application-context.xml
META-INF/
<package>/classes
EDIT_ _ 的 重新错误:无法为类x找到Bean定义
答案 0 :(得分:6)
有几种方法可以做到这一点,但这在很大程度上取决于你想要做什么。您可以在web.xml中包含上下文...
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/applicationContext.xml, classpath:childContext.xml</param-value>
</context-param>
另一种选择是直接从应用程序上下文中导入子上下文。
<import resource="classpath:childContext.xml/>
我不是一个过于强烈的粉丝,因为这些上下文合并,这可能是豆名的噩梦;但是,他们确实有效。
通常情况下,您的JAR会暴露某种工厂或静态构造函数,这些构造函数会读取它自己的Spring配置XML,然后简单地公开您要用作服务的内容。这可能不是解决您特定问题的最佳解决方案,但需要考虑。
答案 1 :(得分:2)
从技术上讲,安德鲁提供的答案将有效。但正如他所指出的那样,通过这种方式将来自不同项目的bean合并在一起通常不是一个好主意。 您可能想稍微退一步并考虑以下问题:
重新考虑这些依赖关系可能会带来更优雅和可维护的解决方案。