问题源于AnnotationConfigApplicationContext的构造函数进行扫描的事实。因此,父级不是在此阶段设置的,它仅在扫描完成后才设置,因为父级是由属性设置的-
因此它找不到您的bean的原因。
缺省的AnnotationConfigApplicationContext Bean没有采用父工厂的构造函数-不知道为什么。
您可以使用基于xml的常规应用程序上下文并在其中配置注释扫描,也可以创建一个自定义虚构bean来创建注释应用程序上下文。这将指定父引用,然后进行扫描。
看一下来源…
工厂看起来像这样:
public class AnnotationContextFactory implements FactoryBean<ApplicationContext> {private String[] packages;private ApplicationContext parent;@Overridepublic ApplicationContext getObject() throws Exception { AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(); context.setParent(parent); context.scan(packages); context.refresh(); return context;}@Overridepublic Class<ApplicationContext> getObjectType() { return ApplicationContext.class;}@Overridepublic boolean isSingleton() { return true;}public void setPackages(String... args) { this.packages = args;}public void setParent(ApplicationContext parent) { this.parent = parent; }}和您的bean定义:
<bean id="moduleB_ApplicationContext" > <property name="parent" ref="moduleA_ApplicationContext" /> <property name="packages"> <list> <value>za.co.test2</value> </list> </property></bean>



