我想在每次实例化 javabean 时执行一段代码,这会在 bean 本身中创建一个变量。我正在使用 java 1.4
问问题
75 次
3 回答
1
我认为您正在描述一个构造函数,但是请注意,您不是创建变量而是为它们赋值(在静态类型语言中)
于 2012-03-26T09:30:11.340 回答
1
显而易见的解决方案是更改 bean 的构造函数以执行该代码。或者添加一个,如果该类当前只有默认(无参数)构造函数。
构造函数必须是无参数构造函数才能符合 JavaBeans 约定。但是,如果初始化依赖于某些属性的值,您总是可以将其放入 setter 中;例如:
public class MyBean {
private boolean initialized;
private String prop1, prop2;
/* Add getters here */
public void setProp1(String prop1) {
this.prop1 = prop1;
initWhenReady();
}
public void setProp2(String prop2) {
this.prop2 = prop2;
initWhenReady();
}
private void initWhenReady() {
if (prop1 != null && prop2 != null && !initialized) {
/* do initialization */
initialized = true;
}
}
}
值得注意的是,一些 bean 框架提供了更好的方法来做到这一点。例如,Spring 的InitializingBean
接口提供了一个回调方法,当所有 bean 实例都已创建和连接时,该方法会被调用(一次)。这是放置依赖于多个 bean 属性的初始化的好地方。
于 2012-03-26T09:30:37.123 回答
1
请更具描述性。
bean 在服务器中的用途是什么?
您可以简单地在 bean 的构造函数中实例化它们
public class MyBean implements Serializable {
private String var;
MyBean(){
// enter code here for intialization
//eg. var="hi";
}
于 2012-03-26T09:30:53.793 回答