Struts2 devMode开发模式

编程开发中,无论是一个产品、框架还是类库,在供交付的生产模式之外提供一个开发模式是很常见的做法。Struts2中的devMode就是这样,当devMode启动时,Struts2将提供额外的功能以有助于开发工作的进行。

启动devMode

默认情况下devMode是关闭的,要启动devMode有三种方法:

  1. 修改Struts2源代码中的struts-default.properties文件,设置struts.devMode=true后重新打包struts2.jar。这样做意味着修改默认配置,同时也意味着除非重新打包,产品将一直以开发模式运行。因此,不推荐使用该方法。
  2. 在产品代码中修改struts.properties文件,设置struts.devMode=true。
  3. (推荐方法)在产品代码中修改struts.xml文件,设置devMode:
<constant name="struts.devMode" value="true" />  

devMode的作用

启动devMode之后,Struts2将提供有利于开发工作的特性,具体包括:

  1. 更改.properties配置文件后,无需重启web服务器即可生效。该功能也可通过设置struts.i18n.reload=true来实现。
  2. 更改struts.xml或校验文件后,无需重启web服务器即可生效。该功能也可通过设置struts.configuration.xml.reload=true来实现。
  3. 提高报错等级,降低容错标准,将原先warning、info、甚至debug级别的信息作为error而抛出。换而言之,把任何潜在错误的蛛丝马迹暴露给开发人员。

devMode的代价

使用devMode是有代价的 — 启动devMode之后,对于每一个HTTP请求,Struts2都会重新加载并解析所有的配置文件(.properties, struts.xml, 校验文件等等),这对应用程序的性能无疑会产生极大的影响。同时,由于devMode降低了容错标准,程序运行过程中更容易抛出异常,这也会对Web服务的日常进行产生干扰。