Hasor是一款开源框架。它是为了解决企业模块化开发中复杂性而创建的。Hasor遵循简单的依赖、单一职责,在开发多模块企业项目中更加有调理。然而Hasor的用途不仅仅限于多模块项目开发。从简单性、松耦合性的角度而言,任何Java应用都可以从中受益。Hasor与Struts,Hibernate等单层框架不同,它可以提供一个以统一、高效的、友好的方式构造整个应用程序。并且可以将这些单层框架建立起一个连贯的体系,可以说Hasor是一个搭建开发环境的框架。这一点与Spring比较相似。Hasor目前包含多个可选的子模块。
特点:
模块:
Hasor-Core
核心包,所有Hasor模块都必须依赖它。对模块提供生命周期管理;以Settings接口形式提供配置文件获取服务;对主配置文件提供检测修改的支持;提供事件服务;提供环境变量操作接口;提供了Timer支持;提供了IoC/Aop。
Web支持下,可以注解声明Filter、HttpServlet、Session监听器、Aop拦截器;还提供了Servlet异常拦截器。通过Guice支持JSR-330。
Hasor-MVC
一个专门用于Web开发的模块,它提供了一个用于MVC模式下开发的请求控制器,通过它可以定义Action,并且可以将这个Action映射为RESTful,其API部分实现了JSR-311。
还有一个类路径资源装载器,用以加载位于Jar包中的资源。
第一章是用以说明Hasor这个项目的功能、目的以及设计思想。同时说明了Hasor所使用的开源协议、类库以及如何贡献和索取Hasor代码。
第二章是引导读者使用Hasor进行项目开发,其中会包含丰富的Demo和API讲解。这一章节不会深入介绍Hasor部内部实现机制和原理。但是在第二章上会有许多知识点链接到第三章.
在第二章有兴趣的读者可以跟随链接深入了解Hasor内部实现机制和各部分功能原理。这些内容都在第二章以后的内容中出现。从第二章开始一直到第七章都是在详细讲解Hasor各个部件的功能和实现机制以及原理。
第八章之后会根据不用模块分别讲解各自模块下的功能。
作为开源发布Hasor使用是Apache License 2.0协议。
More
More是我在2008年之后构建的第一款开源框架,当时以失败告终。而后More的大部分代码都被拆除或者改造。目前保留下来的只有ClassCode、Xml以及一部分位于util包中的工具类。
目前util包中的工具类大部分也已被Apsche的commons-lang、commons-beans项目中的代码所替代。该项目受Apache License 2.0协议保护。
ASM 3.0
ASM是一款字节码框架,使用它可以动态的创建或修改java类文件。配合ClassLoader可以装载修改之后的类Hibernate、Spring都曾使用过它。该框架的部分完成代码位于org.more.asm软件包中,Hasor并没有使用到这个软件包。并且ClassCode组建作为More项目保留组建而存在。软件地址:(http://www.objectweb.org/asm)。
Ognl
Ognl是一款表达式解析引擎代码位于org.more.ognl软件包中,Hasor并没有使用到这个软件包。软件地址:(http://commons.apache.org/proper/commons-ognl/)
这部分内容是受Apache License 2.0协议保护。
apache-commons-lang 2.6、apache-commons-beans 1.7
org.more.convert软件包的内容是来源于apache-commons-beans-1.7,org.more.util的大部分代码是来源于apache-commons-lang-2.6。Hasor并不引用这两个软件包,但是由于org.more中包含了相关代码因此在这里需要加以说明并且列出其授权信息。这部分内容是受Apache License 2.0协议保护。
org.more.json软件包
该软件包是来源于org.eclipse.jetty.util_8.1.3.v20120522.jar,位于Eclipse eclipse-sdk-4.2.2-win32软件中,属于Eclipse 4.2.2的一部分。Hasor-mvc项目依赖这部分功能实现Json数据转换。该代码受到受Apache License 2.0协议以及Eclipse Public License协议共同保护。
Apache License 2.0协议:(http://www.apache.org/licenses/LICENSE-2.0)
Eclipse Public License协议:(http://www.eclipse.org/legal/epl-v10.html)
ASM3.0协议:(http://asm.ow2.org/license.html)
目前Hasor的代码托管于Github(https://github.com/zycgit/hasor),您可以通过Git客户端获取到Hasor的最新代码。可以在(http://msysgit.github.io/)上获取到最新的Git客户端。当您对Hasor有一个更好的改进或想法,可以通过([email protected])邮箱联系到我也可以通过(https://github.com/zycgit/hasor/pulls)递交您的代码。
当您发现Hasor的漏洞和不足可以通过Email联系我。或者在OSChina上发表技术问答。Issues(https://github.com/zycgit/hasor/issues)也是一个发表问题的渠道。或者加入QQ群(293401803)我会为你解答疑问。
项目主页为:http://www.hasor.net/ [尚在建设中...]
依赖:Hasor依赖以下4个软件包: | |
slf4j-api-1.7.5.jar | (负责输出Hasor产生的日志) |
guice-3.0.jar | (Guice3.0,负责提供DI相关的支持) |
aopalliance-1.0.jar | (Aop联盟API,Guice依赖) |
javax.inject-1.jar | (JSR-330标准,Guice依赖) |
日志:如果使用log4j作为日志组建那么需要加入以下两个jar文件,log4j.xml是参考: | |
log4j-1.2.17.jar | (log4j库文件) |
slf4j-log4j12-1.7.2.jar | (slf4j-log4j的适配器) |
log4j.xml | (参考的log4j配置文件) |
约定优于配置(Convention Over Configuration)是一个简单的概念。系统,类库,框架应该假定合理的默认值,而非要求提供不必要的配置。流行的框架如 Ruby on Rails2 和 EJB3 已经开始坚持这些原则,以对像原始的EJB 2.1规范那样的框架的配置复杂度做出反应。一个约定优于配置的例子就像EJB3持久化,将一个特殊的Bean持久化,你所需要做的只是将这个类标注为@Entity。 框架将会假定表名和列名是基于类名和属性名。系统也提供了一些钩子,当有需要的时候你可以重写这些名字,但是,在大部分情况下,你会发现使用框架提供的默认值会让你的项目运行的更快。
Hasor的各个模块都拥有很多配置,但是在您使用Hasor作为开发框架的时候可能会发现,你甚至都不需要对Hasor进行任何配置就可以进行开发工作。Hasor会将COC原则一直传递下去。