Jul 10, 2017 10:38:44 AM

作者:wendal

1.b.53 发行注记

又到金秋,距离上一个版 1.b.52 也颇有段时间了。在 的催促下(事实上他白天晚上的在QQ上催了我两个多月)终于熬到了这一天。

实际上,作为 Nutz 项目发起人的我,这两年的精力很多不在 Nutz 上,我逐渐的退化成 Nutz 的重重重度用户了。现在 Nutz 项目实际推动的人是 wendal。记得那一年(2009年),也是一个秋天,我发布了 Nutz 第15版,也是那个秋天,我遇到了,那时他还年起,我也不老 …然后我们 … 厄,就一版一版的发布到现在咯。

实际上没有神奇的 wendal,这个小项目是不会走到今天的。而这些年来,我发现对于 Nutz, 我和 wendal 的交流并不很多,形式主要就是在 Issue 的回复,代码的提交,和我一直坚持写的这份发行注记上。但是效果却出奇的好,基本上印证了我很早以前的一个观点:“最好的沟通,就是不沟通”

可能有好奇的朋友会问:你精力不在 Nutz 上,在哪里呀?我只能说,请关注我最近开通的微信公众号(rain_on_sand雨打沙滩点点坑)吧,过段日子你会知道的,嘿嘿。当然,肯定也和 Nutz 有关啦。

这可能是我最后一次写 Nutz 的发行注记了,以后希望 wendal 来接替这份工作。下一个版的 Nutz 开发工作将完全由wendal 来主导(实际上之前的很多版本也都是他在主导)。我则希望自己花更多的精力在 Nutz 的推广方面。

那么既然是最后一次写发行注记,我就多说点心里话:

不出意外的话,这个版应该是最后一个 b 版本,下一个版将升级成 r,即,下一个版本将是 1.r.54

另外澄清一下,免得不时总有朋友问:现在市面上的,无论是果壳网,坚果云,还是锤子科技刚出的坚果手机,他们统统和 Nutz 没有半毛钱关系。我们是一个自由的,松散的,独立的,写代码完全看心情的开源团体,谢谢。

———————— 上面是 zozoh 说点啥的分割线———————————————— 下面是 wendal 说点啥的分割线————————

擦,貌似我也不老吧…

这半年,首先必须提一下Nutzbook, 引导式Nutz入门指南及衍生的项目, 据说已经是入门nutz的神器哦

然后呢, 首先感谢一下, 他实现了一个,且该插件已经在生产上运行良好,然后逼着我完成了"官方版"daocache

然后还有的Rk_Cms, ,的NutzWk,,的零售CRM,的微信平台, 都是非常有爱的项目, 及QQ群里各种基情四射的项目和意见(或福利^_^)

另外, 的灵感来自littleant的.在此之前我一直觉得解析mybatis那种XML简直是噩梦.

———————— Nutz 的相关资源的分隔线 —————————

变更统计

417 files changed, 5275 insertions(+), 14550 deletions(-)

兼容性

  • Json输出的属性顺序,现在按原生顺序输出了
  • ("json")的默认Content-Type变成application/json了
  • 若MainModule设置了@At,但子模块没有设置,现在会继承MainModule的@At设置, 可以通过(top=true)回避

新功能

  • 重新实现的NutSql,支持多个Cnd条件, Cnd条件参数化, 带数据库特定注释的Sql #887
  • ("re/index") return ">>:/user/login" 根据返回值来进行视图选择,同时新增ViewModel类用于传递值 #925
  • Aop的ClassLoader机制改造, 使用cglib形式的解决方案, 从而解决不同ClassDefine之间的访问问题
  • Daos类新增自动修改表结构的migration方法 #886
  • dao.insert/update 现在支持更复杂的过滤条件, 其中insert现在支持强制插入自增主键
  • DaoUp类用于解决非Web环境下创建NutDao的问题,其DaoUpTest是Dao操作的快速入门说明
  • EL表达式新增内置方法uuid(32) uuid(16) urlencode base64
  • 动作链的js配置支持可选处理器, 发现shiro插件时能自动加载
  • NutDao进行缓存插件兼容性改造,完全兼容daocache插件了
  • Web环境下用于提前初始化Ioc容器的NutMvcListener
  • IocLoader可以为一个Ioc Bean了, NutIoc会自动发现并加载他们
  • Ioc的Js配置文件中, 支持数组形式的变量拼接了
  • MethodInvokeProcessor默认启用改进过的FastClass调用, Eclipse热代码修改不再有warning
  • Pojo对象生成现在通过FastClass了
  • 支持Pgsql的Json类型
  • 使用Youkit改进了性能
  • 快照版已经自动发布了
  • 新增@Ok("jsonp"), 默认使用请求参数中的callback作为回调方法名

问题修复

  • Issue 941 文档加个Test章节或者独立个Test库出来 by
  • Issue 936 应用事务拦截器之后,抛出的异常的类型变了 by
  • Issue 925 新增一个根据返回值决定最终视图的View by
  • Issue 918 关于注解 和@@Readonly的问题 by
  • Issue 917 dao.drop方法,如果pojo有但不存在,会出现删除table失败 bywendal
  • FastUploading处理超长文本时会截断输出 bywendal
  • 指定json视图返回的content type 为application/json byTuWei1992
  • 多文件Form上传,配置了忽略空文件的情况下,引发的异常 byalbinhdk
  • http.post方法指定发送内容编码为gbk,并未生效的问题 byzhanghuanle
  • mvc传参必须@Param? by
  • Issue 889 当的hostField是@Id时, dao.insertWith插入关联字段的值总是0 by
  • Issue 888 EntityService类 update 返回void by
  • Issue 887 oracle自定义sql,按索引查询,被当做注释过滤掉了。 by
  • Issue 886 根据Pojo定义自动增减数据库字段 by
  • Issue 884 Chain.from方法会包含非数据库字段 by
  • Issue 883 >>重定向不支持中文 by
  • Issue 881 dao.create为Sqlserver 2005建表时Blob类型错误 by
  • Issue 879 未正确处理toJson中NaN的值 by
  • Issue 878 DaoUp — 非Mvc,Ioc环境下的使用Dao的工厂类 by
  • Issue 877 EL表达式的UUID支持UU32和UU64, 及添加Base64 by
  • Issue 875 重写Json的文档 by
  • Issue 873 两个连用的$.post中会解析不到数据,时好时坏,请问各位怎么解决? by
  • Issue 865 org.nutz.lang.Files.createDirIfNoExists(String path)无访问权限时最好能提示 by
  • Issue 860 module中的url映射需求! by
  • Issue 855 为QuartzIocLoader在ComboIocLoader添加缩写 by
  • Issue 854 在动作链中添加shiro插件探测及加载 by
  • Issue 849 改造fetchLinks实现,使其支持缓存扩展 by
  • Issue 848 关于添加只构造一次Ioc容器的IocProvider的建议 by
  • Issue 844 讨论一下Dao的缓存实现 by
  • Issue 843 使用 jquery form plugin 进行ajax表单提交 表单中存在input type="file" 元素 by
  • Issue 841 Oracle 插入Blob对象失败 by
  • Issue 840 Json.toJson(JsonFormat.full()) 会死循环 by
  • Issue 837 NutMvc初始化失败时,若ioc容器已经生成,应触发depose事件 by
  • Issue 829 如果一个Bean实现了IocLoader接口,那自动加入Ioc的加载器列表 by
  • Issue 828 支持更多Http方法 by
  • Issue 825 缓存的相关文档在哪里 by
  • Issue 820 Scans.scan重复加载资源问题 by
  • Issue 8161.b.53 发行注记 - 图2 这个输入框里面输入含逗号的信息,nutz自动解析为多个字符串数组 by
  • Issue 815 Http类对https的处理 by
  • Issue 805 Daos.exts 方法批量更新错误 by
  • Issue 803 创建字段类型解析错误 byRekoe
  • 一对多的映射失败 bymajong
  • nutz有没有像ibatis&1.b.53 发行注记 - 图4这样的功能,按照参数组装sql byprogrammer-monkey
  • build.bat的一点小建议 bygisphm
  • Images.zoomScale 图片缩放,透明背景的png文件自动添加了背景色 byWizzercn
  • sqls执行查询结果集为空 by373492364
  • Cnd.wrap构造sql语句有问题 bylplion
  • 能否整个在线的javadoc byasterisk622
  • Ioc的.js配置文件的Java调用问题:当java方法参数中出现负数时,启动应用异常 byconanca
  • Cnd.where(e2).andNot(e3);不对 byzhuer0632
  • sql文件中强制索引被当成普通注释解析 byrealcbb
  • 希望手册的json部分采用zdoc的方式发布 byywjno
  • IOC注入格式可否支持 env:'环境变量名'/mypath/test ? bycodering
  • filter过滤器 byjicu7766240
  • 从文件池中获取/删除一个文件,为什么要我指定后缀名呢 byconanca
  • org.nutz.img.Images建议加个起始起始坐标点与结束坐标点 bycsg0328
  • 关于@Filters的使用方法 by
  • Issue 66 1.39中dao.insert()方法,没有忽略null字段 by

质量

共通过了 950+ 个单元测试用例,代码覆盖率达到 50+%(按行计算)

Nutz.Dao 经测试在如下数据库上可以工作正常

文档

  • add: 第三方框架集成
  • change: 自定义Sql
  • rewrite: Json手册
  • remove: 创建连接池中关于bonecp的描述,该连接池已经被其作者抛弃
  • add: 大量的javadoc更新/添加

关联项目的更新

  • add: daocache Dao层缓存实现
  • change: shiro 权限插件更新
  • change: quartz 定时任务插件更新
  • add: sqltpl 模板化的自定义SQL
  • add: protobuf 序列化插件
  • add: freemaker及velocity的ViewMaker官方参考实现

主要贡献者名单

本页面的文字允许在和GNU自由文档许可证下修改和再使用。