作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
在 Spring 中创建非静态内部类的最佳方法是什么?
class A {
public class B {}
B b;
public void setB(B b) {this.b = b;}
}
这似乎可行,但我想避免需要构造函数参数:
<bean id="a" class="A">
<property name="b">
<bean id="b" class="A$B">
<constructor-arg ref="a"/>
</bean>
</property>
</bean>
最佳答案
在某些时候,您需要指定外部对象,这是无法避免的。但是,您可以通过向创建内部 B
的 A
添加一个工厂方法,将其移入 Java,并移出 XML:
public class A {
public class B {}
B b;
public void setB(B b) {this.b = b;}
public B createB() {return new B();} // this is new
}
然后你可以做:
<bean id="a" class="test.A">
<property name="b">
<bean id="b" factory-bean="a" factory-method="createB"/>
</property>
</bean>
所以XML比较简单,java比较复杂。 Spring 足够聪明,不会对明显的循环引用感到不安。
选择你的选择,你需要做一个或另一个。
关于java - 用spring创建内部类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2018852/
我是一名优秀的程序员,十分优秀!