Variables 在struts 1 Action类中只加载一次变量

Variables 在struts 1 Action类中只加载一次变量,variables,struts,Variables,Struts,我有一个structs action对象实例,它从属性文件加载变量。我希望它只在第一次调用该操作时发生,以便在进一步执行时从内存读取。有什么提示吗?谢谢。乍一看,至少有两种方法可以做到这一点: 1-从属性文件中读取值,并将其作为静态字段存储在action类中。静态初始值设定项应该用于加载包和读取值。当JVM加载Action类时,您将获得您的值,然后从那里使用它 public class YourAction extends Action { private static String val

我有一个structs action对象实例,它从属性文件加载变量。我希望它只在第一次调用该操作时发生,以便在进一步执行时从内存读取。有什么提示吗?谢谢。

乍一看,至少有两种方法可以做到这一点:

1-从属性文件中读取值,并将其作为静态字段存储在action类中。静态初始值设定项应该用于加载包和读取值。当JVM加载Action类时,您将获得您的值,然后从那里使用它

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使用一个操作实例来服务所有请求,所以所有请求都将看到您的值(即Struts操作类不是线程安全的,它们的行为类似于servlet)