惯例重于配置是Rails带入主流应用开发中的概念。它不是提供那些对于 各个应用而言都很相似的配置文件,而是假定在绝大多数情况下,开发人员都会遵守特定的模式。这种模式具有足够的通用性,所以可以被认为是一种开发惯例,框 架会默认使用这种模式,而不是为每一个新的应用都提供配置。在默认情况下,开发人员就不必再管理种种配置信息了。如果有的需求与惯例的配置信息不同,那么 还可以根据需求进行修改,把默认模式覆盖掉。
Struts 2采用了这个概念。松耦合在给Struts 2带来高度灵活性的同时,也带来了配置上的高度复杂性。惯例在这二者之间做出了平衡,为我们提供了简洁而高效的开发者体验。
Struts 2中“惯例重于配置”的应用可以通过以下几个例子来说明:
♦ 隐式的配置文件加载——不需要显式配置“struts-default.xml”和“struts-plugin.xml”(对每一个插件而言)文件,它们会被自动加载。
♦ Code Behind插件——在使用code behind 插件时,它会混合使用action名和结果字符串在结果模板中进行自动搜索,所以“/user/add.action” 这个action的“success”结果会返回“/user/add-success.jsp”结果模板,“error”结果会返回“/user /add-error.jsp”结果模板。
♦ 默认的结果和结果类型—— 在配置Action的时候,如果使用默认的“success”结果和JSP结果类型的话,就不需要对它们进行配置
♦ 织入(Wiring)Spring业务服务——在安装了Spring框架插件以后,就不必为每个Action所需的Spring提供的业务服务进行配置,这些 业务服务会被自动织入到Action里.
本质是说,开发人员仅需规定应用中不符约定的部分。例如,如果模型中有个名为Sale的类,那么数据库中对应的表就会默认命名为sales。只有在偏离这一约定时,例如将该表命名为”products_sold”,才需写有关这个名字的配置。
如果您所用工具的约定与你的期待相符,便可省去配置;反之,你可以配置来达到你所期待的方式。
参考: