1.b.53 发行注记
又到金秋,距离上一个版 1.b.52 也颇有段时间了。
在 wendal 的催促下(事实上他白天晚上的在QQ上催了我两个多月)终于熬到了这一天。
实际上,作为 Nutz 项目发起人的我,这两年的精力很多不在 Nutz 上,我逐渐的退化成 Nutz 的重重重度用户了。
现在 Nutz 项目实际推动的人是 wendal。
记得那一年(2009年),也是一个秋天,我发布了 Nutz 第15版,
也是那个秋天,我遇到了wendal,
那时他还年起,我也不老 ...
然后我们 ... 厄,就一版一版的发布到现在咯。
实际上没有神奇的 wendal,这个小项目是不会走到今天的。而这些年来,我发现对于 Nutz, 我和 wendal 的
交流并不很多,形式主要就是在 Issue 的回复,代码的提交,和我一直坚持写的这份发行注记上。
但是效果却出奇的好,基本上印证了我很早以前的一个观点:“最好的沟通,就是不沟通”
可能有好奇的朋友会问:你精力不在 Nutz 上,在哪里呀?
我只能说,请关注我最近开通的微信公众号(rain_on_sand 雨打沙滩点点坑)吧,过段日子你会知道的,嘿嘿。
当然,肯定也和 Nutz 有关啦。
这可能是我最后一次写 Nutz 的发行注记了,以后希望 wendal 来接替这份工作。下一个版的 Nutz 开发工作将完全由
wendal 来主导(实际上之前的很多版本也都是他在主导)。我则希望自己花更多的精力在 Nutz 的推广方面。
那么既然是最后一次写发行注记,我就多说点心里话:
Nutz 的用户虽然不多,估计也就万人左右,深度用户估计也不过千人吧。
但是 Nutz 却实实在在的是大家智慧的结晶。
将近6年的时间,大家用一个个的补丁和bug,让这个小类库变得越来越卓岳不群。
以前有几个朋友总对我说:“Nutz真的很不错,就差点包装了。”
我总是笑而不答,心说:“还不够好,包装个毛?”
现在,作为它多年的用户,我可以负责任的说,这个类库真的很棒,是时候让更多的人知道它了。
我想,作为 Nutz 这个小项目的发起人#0,让更多的人享用到大家智慧的结晶,是我义不容辞的责任。
不出意外的话,这个版应该是最后一个 b 版本,下一个版将升级成 r,即,下一个版本将是 1.r.54
另外澄清一下,免得不时总有朋友问:现在市面上的,无论是果壳网,坚果云,还是锤子科技刚出的坚果手机,
他们统统和 Nutz 没有半毛钱关系。我们是一个自由的,松散的,独立的,写代码完全看心情的开源团体,谢谢。
---------------- 上面是 zozoh 说点啥的分割线----------------
---------------- 下面是 wendal 说点啥的分割线----------------
擦,貌似我也不老吧...
这半年,首先必须提一下Nutzbook, 引导式Nutz入门指南
及衍生的项目https://github.com/wendal/nutz-book-project, 据说已经是入门nutz的神器哦
然后呢, 首先感谢一下面, 他实现了一个daocache,
且该插件已经在生产上运行良好,然后逼着我完成了"官方版"daocache
然后还有科技的Rk_Cms,
,大鲨鱼的NutzWk,
,wukong的零售CRM
,elkan1788的微信平台
, 都是非常有爱的项目, 及QQ群里各种基情四射的项目和意见(或福利^_^)
另外, sqltpl的灵感来自littleant的高仿ibatis(mybatis)实现sql的集中管理.
在此之前我一直觉得解析mybatis那种XML简直是噩梦.
红烧鲨鱼面 -- 上面提及的几位,只有"大鲨鱼"和"面"是食材, 然后我前天在海鲜市场看到了活的小鲨鱼,而且最近半年我以面食为主,所以你懂了.
---------------- Nutz 的相关资源的分隔线 ------------------
变更统计
417 files changed, 5275 insertions(+), 14550 deletions(-)
兼容性
- Json输出的属性顺序,现在按原生顺序输出了
- @Ok("json")的默认Content-Type变成application/json了
- 若MainModule设置了@At,但子模块没有设置@At,现在会继承MainModule的@At设置, 可以通过@At(top=true)回避
新功能
- 重新实现的NutSql,支持多个Cnd条件, Cnd条件参数化, 带数据库特定注释的Sql #887
- @Ok("re:jsp:/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 wendal
- Issue 936 应用事务拦截器之后,抛出的异常的类型变了 by wendal
- Issue 925 新增一个根据返回值决定最终视图的View by wendal
- Issue 918 关于注解@View 和@@Readonly的问题 by ohohco
- Issue 917 dao.drop方法,如果pojo有@VIew但不存在,会出现删除table失败 by wendal
- Issue 916 FastUploading处理超长文本时会截断输出 by wendal
- Issue 907 指定json视图返回的content type 为application/json by TuWei1992
- Issue 897 多文件Form上传,配置了忽略空文件的情况下,引发的异常 by albinhdk
- Issue 894 http.post方法指定发送内容编码为gbk,并未生效的问题 by zhanghuanle
- Issue 891 mvc传参必须@Param? by csg0328
- Issue 889 当@One的hostField是@Id时, dao.insertWith插入关联字段的值总是0 by wendal
- Issue 888 EntityService类 update 返回void by javanan
- Issue 887 oracle自定义sql,按索引查询,被当做注释过滤掉了。 by txc1234
- Issue 886 根据Pojo定义自动增减数据库字段 by wendal
- Issue 885 自定义sql设置数组参数的问题 by JaynLeaew
- Issue 884 Chain.from方法会包含非数据库字段 by wendal
- Issue 883 >>重定向不支持中文 by enzozhong
- Issue 881 dao.create为Sqlserver 2005建表时Blob类型错误 by wendal
- Issue 879 未正确处理toJson中NaN的值 by wendal
- Issue 878 DaoUp -- 非Mvc,Ioc环境下的使用Dao的工厂类 by wendal
- Issue 877 EL表达式的UUID支持UU32和UU64, 及添加Base64 by wendal
- Issue 875 重写Json的文档 by wendal
- Issue 873 两个连用的$.post中会解析不到数据,时好时坏,请问各位怎么解决? by 516388532
- Issue 865 org.nutz.lang.Files.createDirIfNoExists(String path)无访问权限时最好能提示 by cr3at
- Issue 860 module中的url映射需求! by ohohco
- Issue 855 为QuartzIocLoader在ComboIocLoader添加缩写 by wendal
- Issue 854 在动作链中添加shiro插件探测及加载 by wendal
- Issue 849 改造fetchLinks实现,使其支持缓存扩展 by wendal
- Issue 848 关于添加只构造一次Ioc容器的IocProvider的建议 by JaynLeaew
- Issue 844 讨论一下Dao的缓存实现 by wendal
- Issue 843 使用 jquery form plugin 进行ajax表单提交 表单中存在input type="file" 元素 by hzl7652
- Issue 841 Oracle 插入Blob对象失败 by wendal
- Issue 840 Json.toJson(JsonFormat.full()) 会死循环 by wendal
- Issue 837 NutMvc初始化失败时,若ioc容器已经生成,应触发depose事件 by wendal
- Issue 829 如果一个Bean实现了IocLoader接口,那自动加入Ioc的加载器列表 by wendal
- Issue 828 支持更多Http方法 by xbl
- Issue 825 缓存的相关文档在哪里 by zhangsm
- Issue 820 Scans.scan重复加载资源问题 by talentyao
- Issue 816 这个输入框里面输入含逗号的信息,nutz自动解析为多个字符串数组 by cuker919
- Issue 815 Http类对https的处理 by Rekoe
- Issue 805 Daos.exts 方法批量更新错误 by Rekoe
- Issue 803 @Column 创建字段类型解析错误 by Rekoe
- Issue 799 一对多的映射失败 by majong
- Issue 767 nutz有没有像ibatis&这样的功能,按照参数组装sql by programmer-monkey
- Issue 755 build.bat的一点小建议 by gisphm
- Issue 662 Images.zoomScale 图片缩放,透明背景的png文件自动添加了背景色 by Wizzercn
- Issue 613 sqls执行查询结果集为空 by 373492364
- Issue 602 Cnd.wrap构造sql语句有问题 by lplion
- Issue 563 能否整个在线的javadoc by asterisk622
- Issue 493 Ioc的.js配置文件的Java调用问题:当java方法参数中出现负数时,启动应用异常 by conanca
- Issue 467 Cnd.where(e2).andNot(e3);不对 by zhuer0632
- Issue 442 sql文件中强制索引被当成普通注释解析 by realcbb
- Issue 408 希望手册的json部分采用zdoc的方式发布 by ywjno
- Issue 335 IOC注入格式可否支持 env:'环境变量名'/mypath/test ? by codering
- Issue 284 filter过滤器 by jicu7766240
- Issue 282 从文件池中获取/删除一个文件,为什么要我指定后缀名呢 by conanca
- Issue 221 org.nutz.img.Images建议加个起始起始坐标点与结束坐标点 by csg0328
- Issue 137 关于@Filters的使用方法 by Rekoe
- Issue 66 1.39中dao.insert()方法,没有忽略null字段 by happyday517
质量
共通过了 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官方参考实现
主要贡献者名单
另外,很多朋友都在:
欢迎访问官网,以获取更多信息