gpt4 book ai didi

java - Spring:嵌套的应用程序上下文

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:52:01 25 4
gpt4 key购买 nike

我有一个应用程序上下文层次结构。在父上下文中定义的 bean 依赖于在子上下文中定义的 bean。这是它的样子:

  public class X {

public static class A {
public B b;
public void setB(B b) { this.b = b; }
}

public static class B { }

public static void main(String[] args) {
ClassPathXmlApplicationContext parent = new ClassPathXmlApplicationContext(
"/a.xml");
go1(parent);
}

public static void go1(ClassPathXmlApplicationContext parent) {
GenericApplicationContext child = new GenericApplicationContext(parent);

child.getBeanFactory().registerSingleton("b", new B());

A a = (A) child.getBean("a");
Assert.assertNotNull(a.b);
}
}

定义“a”bean 的 xml 文件如下所示:

  <?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">

<bean id="a" class="X$A" autowire="byName" lazy-init="true"/>


</beans>

问题是 B 没有注入(inject)到 A 中。只有当我向父级注册“b”单例时才会发生注入(inject)——这在我的程序中不是一个选项。

有什么想法吗?

最佳答案

你不能那样做。父上下文不能引用子上下文中的 bean 定义。反之亦然。

关于java - Spring:嵌套的应用程序上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1094388/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com