在Maven项目中创建bean非常简单。您将@Autowired
注释添加到要创建的bean中,然后在spring-config.xml中声明其配置:
@Autowired
private ExampleBean exampleBean;
.
.
.
<bean id="exampleBean" class="path.to.your.bean">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
但是如果我有一个多模块的Maven项目并且我想创建的bean来自构建路径中引用的另一个模块呢?你如何创建那个bean?
我考虑了注释@Resource
,但它似乎没有“检测”来自构建路径中添加的另一个模块的bean。
更新1 : 基于Rémi的回答,这就是我所做的:
我将以下行添加到我希望在以下位置创建bean的模块的xml配置文件中:
<import resource="classpath:\dsp2aisp-business\*\root-context.xml" />
我还在@Autowired
上保留了AccountService
注释(这是我想在此模块中使用的bean)。
在声明AccountService
的另一个模块中,我添加了bean声明:
<bean id="accountService" class="fr.bnp.dsp2aisp.service.AccountService">
<property name="hibernateTemplate" ref="hibernateTemplate" />
</bean>
但我一直收到这个错误:
Caused by: org.springframework.beans.factory.CannotLoadBeanClassException: Cannot find class [fr.bnp.dsp2aisp.service.AccountService] for bean with name 'accountService' defined in ServletContext resource [/WEB-INF/spring/root-context.xml]; nested exception is java.lang.ClassNotFoundException: fr.bnp.dsp2aisp.service.AccountService
但我确信该类确实存在于指定的路径中。
是否有其他方法可以使用在另一个Maven模块中声明的bean?
答案 0 :(得分:1)
我终于开始工作了。当你有一个多模块的Maven项目,并且你试图将其中一个模块导入另一个模块以使用它的类时,你不应该从构建路径添加你的模块(属性 - &gt; Java Build路径 - &gt;项目 - &gt;添加)因为编译器无法在运行时找到这些类。
您需要做的只是将这些模块作为Maven依赖项添加到您希望使用它们的模块的POM.xml文件中。
示例:
<dependency> <groupId>com.test</groupId> <artifactId>test-infra</artifactId> <version>0.0.1-SNAPSHOT</version> </dependency>
解决方案非常容易,但发现它有点累人。我希望它能帮助其他人解决同样的问题。
答案 1 :(得分:0)
您可以通过导入其他maven项目bean上下文表单类路径来执行此操作:
this->AppendHeader("Content-Range", "bytes " + offset "-" + (offset + part_size - 1) "/" + file_size);
然后,您可以使用实际maven项目中其他maven项目上下文中定义的所有bean