【问题标题】:Struts 2 properties over static fields?静态字段上的 Struts 2 属性?
【发布时间】:2013-07-03 13:20:19
【问题描述】:

我一直在寻找这个,但一无所获。

Struts2 属性相对于 Java 静态字段有哪些优势?考虑到两者都只保留字符串值,Java 静态字段是最终字段,Java (final)static 字段位于单独的 Constants.java 文件中并且这两种情况都只适用于后端。

任何答案(性能、项目组织等)都将不胜感激。

【问题讨论】:

  • 请考虑到我已经考虑过创建 String 对象并将其存储在 String 对象池中。
  • 哪些是 Struts2 属性,哪些 java 静态字段,你在哪里使用它们等等......我(我们可能)无法理解你现在的问题:/
  • 对不起,这里被称为“属性”(实际上是),但我应该说的是“资源包”;正如我所说,它们只会在后端使用(在这个例子中只调用它的 struts 动作)并且 java 静态字段将是程序员定义的字符串常量,更清楚地说,这些将具有与资源包中的“属性”,希望这可以澄清问题。
  • 啊,好的。那么答案是:明天您将发现您确定永远不会更改的超级不可变最终静态字段...需要更改时,您将需要重新编译和重新部署项目:)
  • 感谢您的评论 Andrea,我考虑过开发模式,但这仅适用于我自己(在开发时)。

标签: java performance struts2 static javabeans


【解决方案1】:

静态最终字段始终是常量,它的使用目的是在运行时不可修改,资源包在运行时可重新加载,因此可修改,因此键的值可能会根据用于搜索的捆绑包而改变。

Struts2 使用这种包的层次结构,每个动作类、包、全局资源等。这种用法的例子是getText()localization 中使用。

它搜索捆绑包的层次结构以获取给定键的简单值。 i18n 标签甚至由用户动态加载资源包。

另一个例子是struts 配置struts.properties,它可以被用户常量覆盖。没有它,就不可能使用框架。

【讨论】:

  • 感谢您的回复罗曼。我看到 Spring 有一种重新加载包的方法,但是当我使用 struts 时,我不想仅仅为这个问题添加 Spring。 Soo,有没有办法用 struts2 重新加载资源包?
  • LocalizedTextUtil.reloadBundles()
  • @Zale 注意,如果你有devMode,Struts 会在每个请求上重新加载包和配置。
  • 感谢指出,但正如我在上面对 Andrea 所说的那样,我正在寻找一种无需 devmode 的方法。但是正如您建议的那样,reloadBundles 可以工作,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-04-28
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
  • 2018-04-18
相关资源
最近更新 更多