从子项目到appcontext的java bootstrap@Configuration。xml
我对春天很陌生,所以我很好;)
我有一个被称为“核心”的共享模块和几个依赖于核心的项目。子项目有spring/app-context.xml
个文件,在执行它们的环境中,spring由另一个框架初始化
在“核心”项目中,我想使用@Configuration方法定义一些单例服务:
@Configuration
public class AppConfig
{
@Bean
public MyService myService()
{
return new MyServiceImpl();
}
}
然后将核心打包在一个jar中,并包含在子项目的类路径中
如何引导核心模块的服务,以便它们可用于子项目中的@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" />
但仅将其添加到子项目的应用程序上下文中。xml似乎解决了这个错误:
<bean id="MyService" class="package.MyServiceImpl" />
# 1 楼答案
如果你看一下JavaDoc,它说明了一切:
听起来像是简单地将
@Configuration
类作为bean包含到xml配置中就可以获得它除此之外,您还应该能够通过
component-scan
获取该类,因为@Configuration
具有@Component
的元注释