我有一个从属性文件加载变量的结构操作对象实例。我希望它只在第一次调用操作时发生,所以在进一步执行时它从内存中读取。任何提示?感谢。
答案 0 :(得分:0)
乍一看,我看到至少有两种方法可以做到这一点:
1 - 从属性文件中读取值并将其作为静态字段存储在操作类中。静态初始化程序应该用于加载bundle并读取值。当您的Action类由JVM加载时,您将获得您的值,然后从那里开始使用它。
public class YourAction extends Action {
private static String value;
static {
// value = load code here
}
...
}
由于您在加载Struts功能时无权访问,我认为您必须使用以下内容来阅读您的值:
ResourceBundle.getBundle("com/some/package/bundle").getString("some_key")
2 - 在Action实例上设置您的值并使用您的构造函数加载,稍后只需使用它:
public class YourAction extends Action {
private String value;
public YourAction() {
super();
//value = load code here
}
...
}
这将起作用,因为Struts使用一个Action实例来提供所有请求,因此所有请求都将看到您的值(即Struts Action类不是线程安全的,它们的行为类似于servlet)。