Hasor

Dataway header传参

可紊 提交于 2020-08-07 04:05:03
import 'net.hasor.dataql.fx.web.WebUdfSource' as webData; return webData.getHeader("name"); 官方文档:https://www.hasor.net/web/overview/catalog.html ———————————————— 版权声明:本文为CSDN博主「我乃宙斯」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/maple_son/article/details/105947993 来源: oschina 链接: https://my.oschina.net/ta8210/blog/4300558

绝了!干掉Controller、Service、DAO、Mapper!

六眼飞鱼酱① 提交于 2020-08-05 15:35:07
   20 大进阶架构专题每日送达   本文来源:   https://my.oschina.net/ta8210/blog/3234639   Dataway介绍   Dataway 是基于 DataQL 服务聚合能力,为应用提供的一个接口配置工具,使得使用者无需开发任何代码就配置一个满足需求的接口。整个接口配置、测试、冒烟、发布,一站式都通过 Dataway 提供的 UI 界面完成。UI 会以 Jar 包方式提供并集成到应用中并和应用共享同一个 http 端口,应用无需单独为 Dataway 开辟新的管理端口。    这种内嵌集成方式模式的优点是,可以使得大部分老项目都可以在无侵入的情况下直接应用 Dataway。进而改进老项目的迭代效率,大大减少企业项目研发成本。   Dataway 工具化的提供 DataQL 配置能力。这种研发模式的变革使得,相当多的需求开发场景只需要配置即可完成交付。从而避免了从数据存取到前端接口之间的一系列开发任务,例如:Mapper、BO、VO、DO、DAO、Service、Controller 统统不在需要。   Dataway 是 Hasor 生态中的一员,因此在 Spring 中使用 Dataway 首先要做的就是打通两个生态。根据官方文档中推荐的方式我们将 Hasor 和 Spring Boot 整合起来。这里是原文:https://www

ASM Type top (current frame, locals[3]) is not assignable 问题排查

好久不见. 提交于 2019-12-25 06:19:32
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 先说遇到的问题,Hasor 在1.6 和早期 1.7 jdk 下运行 asm 动态生成的字节码无任何异常。接着有反馈在 java8下出现类似如下异常,一开始并没有里会这个异常信息。找到一个解决办法是增加一个 -noverify 参数来压制这个校验异常。 最近比较好奇想寻找一下究竟为什么会出现 VerifyError 错误,下面是这个错误的全貌。 2017-02-15 11:03:47.423 [RSF-Nio-4] INFO - connected form 127.0.0.1:60618 2017-02-15 11:03:47.440 [RSF-Biz-1] ERROR - do request(12345) failed -> service [RSF]net.hasor.website.client.ProjectService-1.0.0, error :(net.hasor.core.utils.UnhandledException)java.lang.VerifyError - Inconsistent stackmap frames at branch target 101 Exception Details: Location: net/hasor/website/manager

JFinal 整合 Hasor 之后 JFinal 会更强!!

若如初见. 提交于 2019-11-30 05:05:55
Hasor 2.5.1 版本开始 支持深度整合 JFinal。整合之后您在使用 JFinal 时候会更爽快,JFinal 会变得更强! IoC/Aop 支持 Controller 通过 @inject 注解进行依赖注入服务。 被注入的服务支持 IoC/Aop。 被注入的服务支持 初始化 init 调用。 接口可以被直接注入,接口定义通过 @ImplBy 指定实现类。 被注入的服务支持 @Singleton 单例。 数据库操作方面 提供三种途径控制事务,支持七种事务传播属性,标准的事务隔离级别,Spring 有的 JFinal 都会有。 数据库嵌套事务,多层嵌套事务,不设上限 Hasor 的 JdbcTemplate 数据库操作接口,与 Spring 的 JdbcTemplate 功能 90% 相同。 分布式 RPC 搭配 Hasor-RSF 框架之后,Hasor 可以为 JFinal 提供分布式服务的能力。 有关 RSF 请查阅: https://www.oschina.net/p/Hasor-RSF Web 方面 (暂略) 集成小建议,视您情况自行选择 HasorPlugin,必选,JFinal 中 Hasor 容器启动和销毁。 HasorInterceptor,可选,JFinal 拦截器,为 JFinal 提供 IoC/Aop功能。 HasorDataSourceProxy

用 Hasor 谈一谈MVC设计模式

随声附和 提交于 2019-11-30 05:05:40
MVC 是一个老生常谈的东西早已不是什么稀罕物件,不过在这里还是扒一扒到底都有多少种 MVC。 一、经典 MVC 先说最经典的 MVC,一个请求控制器的请求,负责读取数据,然后将数据派发到试图上。如图: 在经典 MVC 中,可以看到我们请求的页面并不是真正的页面,而是一个控制器。具体显示的页面由这个控制器来决定,大名顶顶的 struts 框架就是这样一种模式。然而,通常为了记忆方便,基于这种经典模式的 MVC 我们通常是把 Controller 的名字起的和 View 一样。 这种模式下,Controller 的职责主要有两个:1、确定显示的最终页面。2、执行页面逻辑准备相关数据。 在 View 中使用的数据是来自 Controller 给予的。 例如“判断当前用户是否登录,如果登录则展现用户详细信息,如果未登录则展现登录界面”。这种场景比较适合这种模式。 二、视图前置 MVC 这是 MVC 的一个变版,在这种模式中 View 的地位被提升到 Controller 之前。也就是说请求是先得到了要显示的页面,而页面中的数据的获取逻辑被后置的 Controller 提供。 这种模式下,Controller 的职责变得只有一个,那就是:执行页面逻辑准备相关数据。视图前置这种模式在职责上更加清晰,但是它失去了对页面展现的控制。 通常在某个数据集中展现的地方会有这种模式的身影,例如:List

使用 Hasor 进行多种 MVC 方式开发

时光总嘲笑我的痴心妄想 提交于 2019-11-30 05:05:29
这篇是承接《 轻量级 Java 开发框架 设计 》系列Blog文的后续文章,本文将着重讲解使用 MVC 设计模式开发基于 Hasor 的应用程序。 在《查询数据库显示到页面( http://my.oschina.net/u/1166271/blog/186940 )》一文中简要介绍了如何查询数据库的内容并显示到页面上,其中也用到了 MVC 开发模式。 本文将提及不同形式下的 MVC 在 Hasor 中如何运用。 最传统的 MVC 分层是, M 模型层负责处理业务逻辑,V 视图层负责展现业务层输出的数据,C 控制器负责外界环境的输入,并将输入转换为模型层的输入,最终将模型层的输出派发到视图。这种工作方式如下图所示: 这种 MVC 强制要求必须通过 控制器 将请求转发到视图上才能完成页面展示。这是典型的 MVC 模型,理解起来并不困难。但是基于这种模型开发人员在开发 Web 应用程序工作中会遇到问题。 首先我们知道,开发 WEB 应用程序需要一个展示页面。页面展示技术可以是 jsp、模板等。使用上面这种方式,开发人员要记住控制器、页面。两个地址。而控制器地址和页面地址往往会出现不一致或者无法根据一个给定的规则进行互相推导。 这样一来在调试过程中,开发人员往往会无从下手,到底是哪个控制转到这个视图,又或者这个控制器最终由哪个页面来展示。当然通过跟踪代码这根本不是问题

简单方便的表单验证

淺唱寂寞╮ 提交于 2019-11-29 07:01:01
本节将会介绍如何使用 Hasor 强大的表单验证功能。在开始正文之前先墨迹两句为什么要使用表单验证功能。 通常一个表单在递交到后台之后我们在处理表单内容之前会做一些参数合法性校验。比如:年龄大于1,性别必须是:男或女,帐号密码输入不能为空。最后还要把验证的信息反馈到页面上。 Hasor 在设计表单验证功能时候参考了大量具有类似功能的框架,也做了大量 API 上面的设计优化。相信会给您一个非常清爽欢快的体验。好了废话不多说,进入正题。 表单验证 在 Hasor 中使用表单验证必须要通过 Controller,我们以登录场景为例进行说明。首先把各种登录请求参数传递进来(关于传参可以阅读:https://my.oschina.net/u/1166271/blog/753718) public class LoginForm { @ReqParam("account") private String account; @ReqParam("password") private String password; ... } @MappingTo("/login.htm") public class Longin { public void execute(@Params LoginForm loginForm, RenderData data) { ... } } 第一步:编写表单验证器。

自己动手整合 Hessian 到 Hasor 中发布服务

*爱你&永不变心* 提交于 2019-11-29 03:57:01
Hessian 是一种通信协议,使用 Hessian 可以实现跨平台的方法调用,有点类似 SOAP。您可以使用下面任意一种语言通过 Hessian 协议进行互相调用,Hessian 本身使用的是二进制传输格式。 好了废话不多说,这篇文章是源于和 OSC 上的朋友进行讨论最后得出的,现在拿出来和大家分享一下。 首先我们假想这样一段代码用来发布 Hessian 服务: @HessianService("/testBean") public class HessianBean { public String sayHello() { System.out.println("aaa"); return "aaa"; } } 然后使用下面这样的代码调用这个服务。 @HessianClient("http://127.0.0.1:8082/testBean") public interface IHessianBean { public String sayHello(); } public static void main(String[] args) throws MalformedURLException { IHessianBean bean = (IHessianBean) HessianPlugin.getPropxy(IHessianBean.class); System.out

Hasor 插件集及其使用 Demo

流过昼夜 提交于 2019-11-27 20:48:37
这篇是承接《 轻量级 Java 开发框架 设计 》系列Blog文的后续文章,本文将介绍 Hasor 内部主要插件并附带插件的功能描述和简单使用 Demo。 Hasor 使用的是“ 微内核 + 插件扩展 ”这种设计思想。 截止到目前为止 Hasor-Core 、 Hasor-Web 、 Hasor-JDBC 中一同提供了 14 个功能插件。本文收集并整理了 Hasor-Core、Hasor-Web 两个部分中 11个插件的功能说明以及基本 Demo。 这 14 个功能模块分别在开发的各个方面给予开发人员各种便捷。假如你不想要其中的某个模块可以将其禁用掉。这比起 Spring 而言不管有用没用都引一大堆功能而言要更加贴切,如果你不喜欢这些功能模块大可以放弃它们仅仅启动 Hasor 的内核。这样你会得到更轻量的框架,因为 Hasor 的核心实现仅有不到 50 个类文件。 这里是一个基于 Hasor 的 WebDemo 工程,工程中还实现了一个 Hessian 插件。地址: http://git.oschina.net/zycgit/hasor/tree/master/examples/SimpleWeb Hasor-Core 软件包 Aop 插件 通过 @Aop、@GlobalAop 两个注解提供声明 Aop 切面。@Aop 可以标记到 方法或类上,根据标记的位置来决定 Aop

Guice Aop 与 Hasor Aop 原理及其实现

余生长醉 提交于 2019-11-27 19:39:01
这篇是承接《 轻量级 Java 开发框架 设计 》系列Blog文的后续文章,本文主要介绍 Hasor 中 AOP 方面的设计以及实现。 提起 Aop 大家并不陌生,OSC中也不缺乏优秀的介绍文章。因而我也不费唇舌去介绍什么是 AOP 以及AOP 的切面概念。下面就转入正题。 Hasor 的核心采用的是 Google Guice 也就是说,AOP 核心实现也就是 Guice 提供的。因此本文首先要介绍 Guice 是如何实现 Aop 然后在介绍 Hasor 的 Aop 实现方式。 所以什么 CGLib、ASM、Javassist 都先闪到一遍去把,没必要搞一个重复的功能添加进来。 本文将分为三个部分讲解: 1 Guice Aop:介绍使用原生 Guice 方法实现 Aop。 2 Hasor Aop:介绍使用 Hasor 的 Aop 如何使用。 3 讲解 Hasor 是如何实现 Aop 以及如何处理 Aop 链问题的。 Guice Aop 先看看如何使用原生 Guice 实现 AOP 把,下面是 Guice 中一个标准的切面完整代码: class MyInterceptor implements MethodInterceptor { public Object invoke(MethodInvocation invocation) throws Throwable { System