我有一个 Action 类,该类将有一个 BOC 对象,该对象将填充 Spring 依赖注入(inject)。示例代码如下:
public class ActionCls {
private BOC theBoc = null;
/*** theBoc getter / setter ***/
}
如果我想调用一个成员函数,说thefunc
, 属于 BOC
在ActionCls
里面构造函数,像这样:
public class ActionCls {
private BOC theBoc = null;
ActionCls() {
theBoc.thefunc();
}
}
将抛出一个运行时错误,提示 theBoc
一片空白。我确实尝试使用 init-method
在这样的 Spring 配置中:
<bean id="theBoc" class="com.huahsin68.BOC" init-method="thefunc"></bean>
无论如何,这没有帮助,因为即使 thefunc
首先被调用,但是 theBoc
setter 仅在 ActionCls
之后调用构造函数。这是一种调用theBoc
的方式吗?二传手第一然后只有ActionCls
构造函数?这样theBoc
不为空,我可以调用 thefunc
.
最佳答案
您不能指望在类的构造函数被调用之前调用类的 getter 或 setter。你想要实现的是不可能的。您可以更好地创建一个参数化构造函数,在其中使用一些参数初始化 theBoc,在 ActionCls bean 上使用 constuctor-arg
参数,然后调用该方法:
public class ActionCls {
private BOC theBoc = null;
ActionCls(BOC theBoc) {
this.theBoc = theBoc
theBoc.thefunc();
}
}
然后你可以像这样定义你的构造函数参数:
<bean id="actionCls" class="foo.bar.ActionCls">
<constructor-arg ref="boc"/>
</bean>
关于java - 如何在调用任何其他类构造函数之前调用 Spring setter 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11898172/