发布于 2016-08-19 07:50:45 | 146 次阅读 | 评论: 0 | 来源: 网友投递

这里有新鲜出炉的精品教程,程序狗速度看过来!

Hasor Java开源框架

Hasor是一款开源框架。它是为了解决企业模块化开发中复杂性而创建的。Hasor遵循简单的依赖、单一职责,在开发多模块企业项目中更加有调理。然而Hasor的用途不仅仅限于多模块项目开发。从简单性、松耦合性的角度而言,任何Java应用都可以从中受益。Hasor与Struts,Hibernate等单层框架不同,它可以提供一个以统一、高效的、友好的方式构造整个应用程序。并且可以将这些单层框架建立起一个连贯的体系,可以说Hasor是一个搭建开发环境的框架。Hasor包含多个可选的子模块


设计思想

Hasor 提倡开发者充分利用编程语言的优势进行三方整合和模块化设计。同时 Hasor 也主要是通过这种“ 微内核+插件 ”的方式丰富开发所需的所有功能。

决定避开 COC 原则的原因是, COC 虽然已约定的方式降低了整个框架的设计复杂度,但同时也最大限度的牺牲了框架的灵活性。缺少灵活性的框架在应用场景上会受到极大的制约。而 Hasor 的设计则更加面向底层,因此需要更多的灵活性。

Hasor 强大的灵活性表现在模块整合能力上,对于某一个领域开发方面 Hasor 依然强调并力推 COC 。小而美的核心,大而全的生态圈是 Hasor 的目标。

架构

特性

  • 01. IoC/Aop编程模型,设计精巧,使用简单。

  • 02. COC原则的最佳实践,‘零’配置文件。

  • 03. 微内核 + 扩展,基于内核已发展出 DB、Web、Restful 三大独立的基础框架。

  • 04. 真正的零开发,解析项目特有的自定义 Xml 配置。

  • 05. 支持模板化配置文件,程序打包之后一套配置通吃(日常、预发、线上)以及其它各种环境。

  • 06. 完备的 JDBC 操作接口,支持 Result -> Object 映射。

  • 07. 提供三种途径控制事务,支持七种事务传播属性,标准的事务隔离级别。

  • 08. 支持多数据源、及多数据源下的事务控制(非JPA)。

  • 09. 内置事件机制,方便进行业务深度解耦,使业务逻辑更佳清晰。

  • 10. 支持 Web 类型项目开发,提供 restful 风格的 mvc 开发方式。

  • 11. 支持Form表单验证、支持场景化验证。

  • 12. 提供开放的模版渲染接口,支持各种类型的模版引擎。

  • 13. 提供丰富的工具箱,帮助您快速开发,有了它您甚至不需要 apache-commons。

  • 14. 支持log4j、logback等多种主流日志框架。

  • 15. 体积小,无第三方依赖。

---2.4.1 到 2.4.3 ---

* 新增:
    01.新增 Htmlspace工具类:StringEscapeUtils、EntitiesUtils。工具来源为:apache-common
* 改进:
    01.改进启动日志输出。
    02.WebController 增加一组 putData 方法用于输出到渲染模版中。
    03.JdbcOperations接口可以通过依赖注入被注入到 Service 中。
    05.TransactionTemplateManager 代码优化,修复潜在的 npe 异常情况。
    06.ValidErrors 接口继承自 RenderData 获取参数更加方便。
    07.WebController 类重度优化,删除了一些重复的方法,增添表单验证相关的方法。
* 新增:
    01.Restful 框架整合 Validation 插件增加请求参数 @Valid 验证功能。
    02.注解 @Valid 支持场景化验证。
* 改进:
    01.env.config 加载环境变量遇到名称冲突时的,Bug。
    02.DBModule 类,在声明 Aop 类匹配的时候从任意类,改为需要标记 @Transactional 注解的类。
* 改进:
    01.env.config 功能的优化。

---一个简单的用户登陆Demo ---

/**
 * 本地登陆
 * @version : 2016年1月1日
 * @author 赵永春(zyc@hasor.net)
 */
@MappingTo("/account/login.{action}")
public class Login extends Action {
    //
    public void execute(@PathParam("action") String action, @Valid("SignIn") @Params LoginForm loginForm, RenderData data) throws IOException {
        if (StringUtils.equalsIgnoreCase("do", action)) {
            //
            // - 登录请求
            this.putData("loginForm", loginForm);
            if (!data.isValid()) {
                renderTo("htm", "/account/login.htm");//验证失败
            } else {
                renderTo("htm", "/account/login.htm");//验证通过
            }
        } else {
            //
            // - 登录页面
            data.clearValidErrors();//清空验证信息,避免瞎显示
            if (this.isLogin()) {
                String ctx_path = data.getAppContext().getServletContext().getContextPath();
                data.getHttpResponse().sendRedirect(ctx_path + "/account/my.htm");
            }
        }
    }
}

FormBean

@ValidBy(LoginFormValidation.class)
public class LoginForm {
    @ReqParam("email")
    private String email;
    @ReqParam("account")
    private String account;
    @ReqParam("password")
    private String password;
    @ReqParam("redirectURI")
    private String redirectURI;
    //
    //
    ....
    ....
}

表单验证器

public class LoginFormValidation implements Validation<LoginForm> {
    @Override
    public void doValidation(String validType, LoginForm dataForm, ValidErrors errors) {
        if (StringUtils.equalsIgnoreCase("SignIn", validType)) {
            if (!StringUtils.equalsIgnoreCase("admin", dataForm.getAccount())) {
                errors.addError("account", "帐号不是admin。");
            }
            //
            //
        } else if (StringUtils.equalsIgnoreCase("SignUp", validType)) {
            errors.addError("message", "暂不支持注册功能。");
            //
        }
    }
}

使用了 Freemarker 之后页面对于验证结果的显示

<form class="form-horizontal">
    <input type="hidden" name="redirectURI" value="${req_redirectURI}"/>
    <input name="email" type="text" value="${loginForm.email}">
    <!-- 帐号的验证结果 -->
    <#if validData["account"]?? >${escapeHtml.escapeHtml(validData["account"]?join(","))}</#if>
    <input name="password" type="password">
    <!-- 密码的验证结果 -->
    <#if validData["password"]?? >${escapeHtml.escapeHtml(validData["password"]?join(","))}</#if>
    <input type="submit">
</form>


历史版本 :
Hasor 3.2.2 正式发布,携带了大量更新
Hasor 3.2.0 版本发布,新添服务查询引擎新成员
Hasor 3.1.2 发布,DB 框架升级、验证框架升级、Web 框架升级
Hasor 3.1.1 发布,修复设置环境参数放弃加载 env.config
Hasor 3.1.0 发布,修复 jdk1.8 下 VerifyError 错误
Hasor 3.0.2 发布,Bug 修复更新
Hasor 3.0.0 革新扩展机制,Web&Restful 框架合并
Hasor 2.5.2 发布,新增 MyBatis 内置插件
Hasor 2.5.1 发布,支持 JFinal 整合
Hasor 2.5.0 发布,Binder功能优化
Hasor 2.4.6 发布,优化更新
Hasor 2.4.5 发布,支持环境变量进行依赖注入
最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务