0

我想在每次实例化 javabean 时执行一段代码,这会在 bean 本身中创建一个变量。我正在使用 java 1.4

4

3 回答 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 回答