> 设为首页 加入收藏 关于我们
 
 
首页 新闻 技术 教程 框架 源码 服务中心  
 
 
  合作 MyRSS 博客 wiki 社区
 
信息搜索: 全部网站 easyjf.com
  当前位置:首页-EasyJWeb
零配置及惯例代替配置
作者:大峡 来源:  发布时间:2007-08-14
杏仁黄 秋叶褐 胭脂红 芥末绿 天蓝 雪青 灰 银河白(默认色)
 

这是[挑战MVC极限]EasyJWeb-1.0特性的第四篇文章,今天主要介绍零配置及惯例代替配置。

配置是好还是坏

  首先,我承认配置是好东西,它能够通过修改程序以外的数据来改变系统的运行性质或功能,大大提高了系统的灵活性,可维护性,从而延长了一个系统的存活期。
  跟其它任何事情一样,物极必反。当一个好的东西泛滥成灾的时候,我们也会产生厌恶,走向另外一个极端。而纵观今天我们正统的JavaEE应用,配置可谓无处不在,由于过分的强调了灵活性、可扩展性、可选择性,大到Spring小到log4j的各种框架、辅助工具都会提供配置文件来改变他们的运行属性。一个JavaEE应用往往需要到很多的框架及辅助工具,比如Spring的bean配置文件、dwr配置文件,hibernate的对象-关系映射文件、struts的配置文件、验证文件等。好大一堆啊,我们看看appfuse中的配置文件,而维护这些配置文件,并非一个简单的事儿。

如何简化配置

  为了解决过度“配置”给我们带来的配置恐惧病,唯一的办法是简化配置。
  我们如何简化配置,使配置尽量的少,尽量的简单,甚至把配置减到零呢?在整个java社区,有很多人在做着这样事儿。减化的流程大致如下:
  第一步:使用注解,把不是频繁变动的配置信息从外部配置文件迁移到与这些配置紧密联系的java文件中,可以减少2/3以上的配置信息。
  第二步:一些具有很多习惯性的配置属性,可以通过惯例约定的方式,来代替配置,从而又可以减掉一部分配置。
  第三步:最后余下的即是跟程序运行环境紧密相关,易变的配置文件。比如针对数据库连接信息dataSource的配置。
  这样就可以在不影响系统的灵活性、可扩展性、移植性的情况下,最大限度地减化了配置。

零配置

  EasyJWeb在开发的过程中,在配置处理上,一直把减化配置作为一个重点注意事项,并实现了零配置。有了零配置支持,你可以不写一句配置文件,就能实现立体感超强的JavaEE应用。dao、service、module、action等,都会按照惯例约定的方式来工作。
  比如,我们需要写一个用户登录的Action,可以在com.easyjweb.action这个包下面,添加一个名为LoginAction的类,可以继承AbstractPageAction或者直接实现IWebAction接口。 使用AbstractPageAction能自动识别模板,实现起来最简单,代码内容如下:

public class NewsAction extends AbstractPageCmdAction {
public Page login(WebForm form,Module module)
{
 
if("xiaoxiao".equals(form.get("name"))&&"123".equals(form.get("password")))
 
{
  
return module.findPage("success");
 }

 
else return module.findPage("index");
}
 


在WEB-INF/views/login/目录中,存放两个文件,一个是名为index.html,主要是登录表单;另外一个是success.html,内容为登录成功提示页面。
这样即可通过/login.ejf来访问这个登录应用。
由此可见,我们确实不需要一句配置文件,就能让EasyJWeb这个MVC框架运转起来。

惯例(约定)代替配置

  在上面“零配置”示例中,我们没有使用一句配置文件,在这里EasyJWeb中的“惯例(约定)代替配置”功能起了非常大的作用。按约定方式来寻找Action、寻找视图模板页面。才使得mvc能工作起来。
  惯例代替配置,可以大大提高软件的生产力。在EasyJWeb中,很多地方都使用惯例代替配置,下面进一步介绍智能页面查询,这是一个惯例代替配置的例子。
在一个基于AbstractPageCmdAction的模块PersonAction中,有下面的方法:

public void doEdit()
{
}

public void doList()
{
}


 其中doEdit方法中可以不包含一句代码,也不需要有任何视图模板的代码。EasyJWeb在没有找到针对该模块相关Page配置的情况下,此时会自动应用“惯例代替配置”的功能,从而找到/views/person/edit.html作为doEdit的页面模板;同理,EasyJWeb的“惯例代替配置”还会把/views/person/list.html作为doList的页面模板。
除了模板以外,在代码生成,JPA Entity标签处理、通用业务封装,验证等均引入了“惯例代替配置”。在我们的实践中,“惯例代替配置”确实是一个非常牛的东西,他们帮我们省了很多事儿。
 

 
评论】 【加入收藏】 【推荐给朋友】 【字体:  】 【关闭 
 
团队常用资源链接
《EasyJF办公室及联系方式》
《如何参与EasyJF开源工作》
EasyJF协同及版本控制-SVN
《EasyJF团队章程》
《EasyJF团队成员工作手册》
《EasyJF成员名单》
《EasyJF项目列表》
《EasyJF开源基金赞助名单》
 
 
EasyJWeb
EasyJWeb是基于
java技术,应用于
WEB应用程序快速
开发的MVC框架,
框架设计构思来源于国内众多项
目实践,框架旨在借鉴当前主要
流行的开源Web框架(Struts、
JSF、Tapestry 、Webwork),吸
取其优点及精华,利用
Velocity作为模板页面引擎,实
现页面及代码完全分离的MVC开发
取框架。
EasyJF开源CMS
EasyJF开源CMS
有常用CMS系统的
基本功能,另外还
有自动html文件生
成、AJAX级联菜单、积分系统、
权限管理等功能,支持UBB。该论
坛系统使用基于OO的方法设计,
采用多层B/S构架,数据库持久层
使用Hibernate,Web层使用
Struts框架,java代码与页面
完全分离,易扩展。
EasyJF开源博客系统
EasyJF开源博客系
统基本的博客的书
写、博客圈、流量
统计、排名、个人
像册、音乐、专题等功能。支持
自定义模板、静态html文件生成
、服务器集群、权限系统、积分
系统等。系统使用基于OO的方法
设计,采用多层B/S构架,数据库
持久层使用EasyDBO,Web层使用
EasyJWeb框架,java代码与页面
完全分离,易扩展。
EasyDBO
EasyDBO是一个非
常适合中小型软件
数据库开发的数据
持久层框架,系统
参考hibernate、JDO等,结合中
小项目软件的开发实际,实现简
单的对象-关系数据库映射。

友情连接
LUPA开源论坛 Java研究组织(JR)  与JAVA共舞  java视野   Java开源大全   BlogJava      Jdon解道 SpringSide   天乙论坛   CowNew开源团队  AgileJava开源   javathinker   CSDN Java频道  赛迪网Java频道 中国Eclipse社区   Java家   Java中文站 FireFox中锁文网   java天下   ideagrace   解惑

Copyright (C) 2005 EasyJF.com, All Rights Reserved
版权所有 简易java框架网

渝ICP备06004507号 如有意见请与我们联系 Powered by EasyJFramework