Hasor

Hasor提供软件开发功能,可以借助该框架快速部署应用程序,为用户提供更专业的应用程序部署方案,软件主要提供loc/Aop容器框架、Web开发框架、JD数据库访问框架、DataQL聚合查询引擎、RSF分布式RPC框架、tConsole CLI框架、Spng整合框架,无论是构建小型的应用程序还是开发大型的系统平台都可以使用这款软件部署相关的功能模块,v4版本也增加和修复了很多内容,新增一个开源,Parameters中结构化的参数可以包装为一个整体,修复 字符串加法计算特定场景下抛异常,修复Dataway 生成的 Swagger api文档,在容器中用 swagger 访问失败,去掉了 DataQL 的环境隔离能力!

Hasor功能模块

1、Core 具备 Aop 并兼容 R-330 的Bean容器框架

支持IoC、Aop的Bean容器。

Module + ApiBinder 统一的插件入口。

无需开发读取自定义xml配置文件。

支持 R-330

2、Web 轻量化 Web MVC 框架

提供 RESTful 风格的 mvc 开发方式。

提供请求验证接口、验证支持场景化。

模版渲染接口,支持各种类型的模版引擎。

内置文件上传组件,无需引入任何jar包。

3、提供了JD作和完整事务管理能力

提供 JD 作接口 90% 兼容 SpngJD。

与 Spng 一样,提供七种事务传播属的控制。

支持多种事务控制方式包括:手动事务控制、注解式声明事务、TransactionTemplate模板事务。

支持多数据源(不支持分布式事务)

4、tConsole 专注基于 Telnet 命令行交互框架

支持监听本地端口提供 Telnet 交互的界面。

支持基于标准输入输出构建交互控制台的能力。

利用 tConsole 可以轻松构建命令工具包。

5、RSF 分布式 RPC 服务框架

支持容、负载均衡、集群;

支持动态发布、卸载

支持服务分组、分版本

多种调用方式:点对点、分布式询、泛化调用、同步、异步、回调、接口代理。

支持虚拟机房、隐式传参、服务路由、Telnet 等高级功能。

6、DataQL 服务聚合查询引擎

层次结构:产出具有数据的层次结构的查询结果。

弱类型:不要求声明任何形式的类型结构。

轻逻辑:表达式、取值、条件分支、lambda和函数。

编译运行:查询的执行是基于编译结果的。

扩展代码片段:DataQL 查询中混合其它语言的。

Hasor软件特色

面向生产环境而设计的 Java 应用开发框架。

它的核心设计目标是提供一个简单的交互接口给开发者

开发者可以在此基上灵活的构建自己的应用程序。

无论是应用类程序还是框架类工具 Hasor 都会给予最有力的支持

区别于其它框架的是 Hasor 有着自己一套完整的扩展体系。

无论您是一般的应用工程,还是开发工具框架类项目。Hasor都会是一个强有力的基石。

Hasor使用说明

01. 基于 Spng Boot

用法

在 Spng Boot 中只需要一个 @EnableHasor 注解即可在 Spng 中开启 Hasor 的支持。

新建一个 Hasor 的 Module 并将其用 Spng 管理起来,同时通过 @DimModule 注解标记声明它即可。

最后启动 Spng Boot 项目看到 HasorBoot 的欢迎就表示一切都 OK了。

共享 Spng 配置

Hasor 在启动之后会将 Spng 加载的属文件全部作为 Hasor 的环境变量,例如:application.pperties 文件。

Hasor 会自动将 Spng 的属文件导入到环境变量中若想要进一步在 Settings 中使用 Spng 的属文件可以通过配置 @EnableHasor(usePperties = true) 进一步的将环境变量导入到 Settings。

@EnableHasor 注解

提示

EnableHasor 注解是 Spng Boot 启动 Hasor 的根本,下面是这个注解的属说明。

scanPackages

用来配置扫描 Module 的范围,一般情况下如果 Module 已经被 Spng 作为 Bean 托管之后就无需在配置扫描范围。scanPackages 的作用是,用来加载那些还未被 Spng 托管的 Module。 Hasor 在加载这些 Module 的时候会 new 它们。

mainConfig

虽然共享 Spng 的配置已经解决了大部分配置文件读取的问题,但有时候还是需要更高级的 hconfig.xml 配置文件。这个时候就可以通过这个属来指定 Hasor 的 hconfig.xml。

usePperties

Hasor 在启动的时候会将 Spng Envinment 中属全部导入到 Hasor Envinment 接口中。usePperties 属的作用是告诉 Hasor ,是否将 Hasor Envinment 接口进一步导入到 Settings 接口里。默认值为 false,表示不导入。

startWith

用来声明启动入口。如果配置的启动入口类已经在 Spng 中托管,那么就会通过 Spng 进行创建。否则就直接 new 出这个对象。

customPperties

这个属的意义是可以设定一些特殊的属K/V传递给 Hasor Envinment 中。这些特别的属配置只会在 Hasor 中存在,不会污染 Spng。

@EnableHasorWeb 注解

Hasor-Web 是一款和 Spng 无关的 WebMVC 框架。它的功能与 SpngMVC 是等价的,都是针对 JavaWeb 开发,同时都具备 Restful 能力。

而 @EnableHasorWeb 注解的功效就是在 SpngWeb 环境中启用 Hasor-Web 能力。

使用 Hasor-web 还需要引入对应的依赖:

这个注解有三个属配置:

path

Hasor-Web 的全局配置的拦截路径,默认值是: /*

order

生效顺序,默认值是: 0 (仅在 Filter、Interceptor 模式下有效)

at

Hasor-web 在 Spng 中的工作模式,由 net.hasor.spng.boot.WorkAt 枚举定义。默认是:Filter

Filter:过滤器模式,以 web filter 的方式进行集成。

Contller:控制器模式,以 spngwebmvc 的 Contller 方式进行集成。(4.2.2版本中加入,推荐使用)

02. 基于Spng配置文件

引入标签

在 Spng 配置文件中,首先需要引入 h:* 标签的命名空间。

启用Hasor

引入命名空间之后,启用 Hasor 只需要一个标签即可。

共享Spng配置

Hasor 在启动的时候会将 Spng Envinment 中属全部导入到 Hasor Envinment 接口中。

usePperties 属的作用是告诉 Hasor 是否将 Hasor Envinment 接口进一步导入到 Settings 接口里。默认值为 false 表示不导入。

配置扫描范围

一般情况下如果 Module 标注过 @DimModule 注解并同时被 Spng 托管之后无需在配置扫描范围。但是有时候加载那些还未被 Spng 托管的 Module,但也标记了 @DimModule 的 Module 就可以用扫描范围。Hasor 在加载这些 Module 的时候会 new 它们。

指定 Hasor 的配置文件

虽然共享 Spng 的配置已经解决了大部分配置文件读取的问题,但有时候还是需要更高级的 hconfig.xml 配置文件。这个时候就可以通过这个属来指定 Hasor 的 hconfig.xml。

启动入口

startWithRef 和 startWith 可以用来声明启动入口。两者不同的是,前者是应用 Spng 的其它 Bean;而后者是配置一个类名。

提示

startWithRef 和 startWith 为了保证属含义,两者只有一个生效。startWithRef 优先。

加载更多 Module

使用 startWith 加载 Module 只能配置一个,如果有多个 Module 要加载就需要使用下面的办法。

使用 h:module 标签的好处是 Module 不需要有 @DimModule 的注解。

提示

startWithRef 和 startWith 只能配置一个 Module,而 h:loadModule 标签的方式可以配置多个。除此之外两者并无任何差别。

传递属给 Hasor

Hasor 在启动的时候已经将 Spng Envinment 中属全部导入到 Hasor Envinment 接口中。这里是说除了自动导入的这些属之外其它的属文件如何进行导入。

两种导入方式:

h:pperty 标签导入。

refPperties 属导入。

引用Hasor的服务或Bean

通过 h:bean 标签可以在 Spng 中定义一个 Bean,同时这个 Bean 交由 Hasor 创建。

多Hasor环境

Xml 方式的优越在于,可以在一个 Spng Xml 配置文件中启动多个 Hasor。

多环境下声明 Hasor Bean 需要指明 hasorID

Spngmvc 整合 Hasor-Web

要想在基于 Xml 的 Spng 环境中启动 Hasor-Web,还需要在 web.xml 中配置对应的

需要注意 SpngRuntimeListener 的配置顺序必须放到 org.spngframework.web.context.ContextLoaderListener 后面,否则会报 “spng application context not initialize.” 异常。

上一篇 2022-11-28

相关推荐

  • Hasor

    Hasor提供软件开发功能,可以借助该框架快速部署应用程序,为用户提供更专业的应用程序部署方案,软件主要提供loc/Aop容器框架、Web开发框架、JD数据库访问框架、Data...
正在提交中,请稍等片刻...

发表回复

请登录后评论...
登录后才能评论

评论列表 (0条)