我们使用@Configuration
类来执行基于Java的Spring配置。我正在尝试设置AnnotationConfigApplicationContext
(s)的层次结构。
似乎有效。因为我可以从父上下文中自动将bean作为从其中一个子上下文创建的bean的成员。
但是我没有管理从父上下文到@Configuration
类文件的自动装配bean,这非常方便。它们都是空的。
// parent context config
@Configuration
public class ParentContextConfig{
@Bean parentBeanOne...
@Bean parentBeanTwo...
}
// child context config
@Configuration
public class ChildContextConfig{
@Autowired parentBeanOne
@Bean childBeanOne...
}
// a sample bean
@Component
public class ChildBeanOne{
@Autowired parentBeanTwo
}
在此示例中,我所获得的是parentBeanTwo
正确创建,而parentBeanOne
未自动装配(null
)到配置文件。
我错过了什么?
答案 0 :(得分:0)
我认为Spring希望您使用标准的Java层次结构规则来建立配置对象的父子关系。也就是说,让子配置类扩展父配置类。
答案 1 :(得分:0)
从Spring 3.2.2开始,Spring现在支持@ContextHierarchy
。 http://docs.spring.io/spring-framework/docs/3.2.x/javadoc-api/org/springframework/test/context/ContextHierarchy.html
答案 2 :(得分:0)
为此,您的子上下文应导入父上下文,例如:
@Configuration
@Import(ParentContextConfig.class)
public class ChildContextConfig{
@Autowired parentBeanOne
...
}
有关更多信息,请参阅有关@Configuration的春季文档。