我很新的春天是好的;)引导@Configuration
我有一个共享的模块,我会打电话给“核心”和一对夫妇的项目,这取决于核心。这些子项目有spring/app-context.xml
文件,并且在它们被执行的环境中,spring被另一个框架初始化。
在“核心”的项目,我想使用定义一些单身人士服务的@Configuration方法:然后
@Configuration
public class AppConfig
{
@Bean
public MyService myService()
{
return new MyServiceImpl();
}
}
核心封装在一个罐子,包括在分项目的类路径。
如何引导核心模块的服务,使它们可用于子项目中的@Autowire?
编辑:
我遇到的错误是:
org.springframework.beans.factory.NoSuchBeanDefinitionException: No matching bean of type [package.MyService] found for dependency: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}
我已经试过以下每个(完全)的:
<context:component-scan base-package="package" />
<import resource="classpath*:spring/core-context.xml" /><!-- defined in core.jar with MyService as a bean -->
<bean class="package.AppConfig" />
但只添加这子项目的app-context.xml似乎解决了错误:
<bean id="MyService" class="package.MyServiceImpl" />
...或者我并不完全依赖于使用@Configuration方法,但是我必须能够在核心模块中配置beans/services,而不必在子项目中重新配置它们 – pstanton 2013-04-08 03:02:29
您是否采取了看看log4j日志?在DEBUG级别日志记录中,您应该能够看到更多关于为什么找到“AppConfig”而不是“MyService”的信息。 – 2013-04-08 04:08:27
嗨尼古拉斯,谢谢你的提示。打开弹簧日志,我可以看到平台在我的AppConfig上抛出了一个ClassNotFound,这意味着在初始化Spring应用程序上下文之前,容器尚未加载模块的完整类路径。我将不得不接受平台的供应商。 – pstanton 2013-04-08 09:51:49