Skip to content

Releases: suninformation/ymate-platform-v2

Release v2.0.5

24 Apr 16:36

Choose a tag to compare

主要更新内容:

核心(Core)
  • 新增序列化处理器注解支持自动扫描注册
  • 新增IConfigReader接口定义及接口实现
  • 新增IBeanInitializer接口实现自定义Bean实例化后处理逻辑
  • 新增配置项允许@bean注解自定义对象处理器
  • 新增支持在类路径下通过banner.txt文件自定义字符徽标
  • 新增允许通过JVM启动参数(ymp.run_env)配置系统运行环境并根据环境配置和操作系统类型加载框架配置文件
  • 新增Freemarker模板引擎配置构建工具类
  • 新增RecycleHelper对象资源回收机制
  • 优化框架初始化逻辑
  • 优化调整IInitializable对象初始化能力接口
  • 优化BlurObject在字符串转换为数值异常时将返回默认值并输出异常警告
  • 优化ClassUtils类加载方法防止发生NoClassDefFoundError异常时程序中断
  • 优化Bean注册时是否忽略接口分析逻辑
  • 优化对象序列化接口新增ContentType获取方法
  • 优化密码处理器接口支持设置自定义密钥
  • 优化丰富ClassUtils.BeanWrapper类包装器方法
  • 优化控制台表格构建工具输出样式和换行转义逻辑并支持CSV格式输出
  • 优化@ignored注解支持在包上声明
  • 优化FileUtils文件工具类增加文件压缩和复制方法
  • 优化并修正接口方法名称拼写错误
配置体系(Configuration)
  • 新增@configurable注解通过配合IConfigurable接口实现配置文件自动装配
  • 新增配置对象支持是否开启自动重新加载
  • 新增配置文件状态检查机制使修改配置文件内容无需重启服务将自动生效
  • 新增允许通过JVM启动参数(config_home)进行体系目录配置
  • 优化调整IConfiguration使其继承IConfigReader接口
  • 优化配置代理逻辑及配置文件分析器接口方法
日志(Log)
  • 优化并新增(Logoo)怀旧版业务日志记录工具
  • 优化日志输出级别判断
Web框架 (WebMVC)
  • 新增BeetlView视图对Beetl模板引擎支持
  • 新增控制器方法返回结果对象支持自定义输出
  • 优化视图接口方法支持批量添加属性参数
  • 优化控制器方法返回值是String和IView之外的对象并且未指定@responsebody注解时框架将默认采用JSON输出
  • 优化UploadFileWrapper文件上传对象包装器对文件移动和复制操作处理逻辑
持久化(JDBC)
  • 优化日志输出SQL参数内容时若字符串中包含换行符则采用Base64编码方式输出
  • 优化堆栈跟踪支持多包名过滤
  • 优化DBCP数据源初始化逻辑
  • 优化JDBC方言以兼容SQLite、PostgreSQL等数据库
  • 优化密码参数值解密处理逻辑
  • 优化实体生成器模板引擎配置方式
持久化(Redis)
  • 优化完善数据源初始化逻辑
  • 优化模块接口方法
  • 优化会话连接开启及关闭处理逻辑
  • 优化完善消息发布订阅逻辑
  • 优化密码参数值解密处理逻辑
  • 新增模块文档
插件(Plugin)
  • 优化插件支持通过依赖注入引用插件实例
服务 (Serv)
  • 修正客户端线程池参数初始化错误
缓存 (Cache)
  • 新增针对Redis缓存禁用元素过期事件订阅配置项
  • 新增针对Redis缓存是否采用SET进行数据存储开关配置
  • 优化重命名缓存包装类名称拼写错误
  • 优化获取对象序列化接口配置逻辑
  • 优化基于Redis缓存及对象过期事件处理逻辑

Release v2.0.4

29 Dec 04:08

Choose a tag to compare

主要更新内容:

核心(Core)
  • 优化模糊对象增加自定义类型转换器接口扩展能力
  • 优化对象序列化接口实现及相关代码实现
  • 优化事件处理线程池默认最大线程参数配置
  • 优化事件逻辑并取消事件配置扩展参数项(将统一采用框架扩展参数)
  • 优化事件代码逻辑并新增解注册事件类型和监听器
  • 优化事件队列大小参数配置项名称
  • 更新事件相关文档内容
  • 修正格式化消息时可能产生空指针问题
  • 优化线程池工厂
  • 优化PropertyState属性值是否变化的判断逻辑
  • 优化PropertyState空值判断逻辑
  • 模块加载时尝试优先初始化配置体系模块
  • 增加通过类名称获取模块实例对象方法
  • 优化拦截器全局配置分析逻辑
配置体系(Configuration)
  • 优化调整配置体系代码逻辑结构
验证 (Validation)
  • 新增@required以替代类名称拼写错误的@requried注解类(目前两者作用相同)被替换者将在未来版本更新中移除
  • 为未来剔除@VRequried做准备
  • 优化@VRequried验证注解兼容性
Web框架 (WebMVC)
  • 优化使用字符串构建JSON视图时保证属性的顺序
  • 优化控制器参数@ModelBind注解支持VO对象数组(注:仅支持通过@RequestParam注解获取参数)
  • 增加控制器异常自定义处理机制
  • 新增通过package-info.java为包中同级控制器类添加通用配置能力
  • 优化CookieHelper构造方法和Http状态视图代码
持久化(JDBC)
  • 数据库默认更新锁常量名变更为DEFAULT未来将取代MYSQL和ORACLE
  • 优化数据库标识符拼装字段名称的逻辑兼容性
  • 优化表名称前缀处理逻辑
  • 优化实体删除处理逻辑支持按条件删除
  • 优化查询对象操作的易用性
  • 优化存储器并允许根据数据库类型进行加载
  • 优化字段转成员属性名称的处理逻辑
  • 优化存储器动态SQL拼装脚本处理逻辑使支持针对多种数据库分别进行配置
  • 优化数据库方言接口并新增自定义引用标识符配置项
  • 代码优化并增加事件处理逻辑
  • 优化存储器动态SQL拼装脚本处理逻辑
  • 为存储器添加通过JavaScript脚本动态拼装SQL的能力
  • 修正实体生成器判断字段nullable的逻辑
服务 (Serv)
  • 优化服务模块配置
  • 优化服务模块代码及线程池逻辑
缓存 (Cache)
  • 优化缓存模块事件处理逻辑

Release v2.0.3

02 Nov 16:46

Choose a tag to compare

主要更新内容:

核心(Core)
  • 新增IInitializable接口
  • 新增控制台表格输出构建工具类分别支持普通格式和Markdown格式
  • 增加抽象拦截器实现类支持
  • 优化依赖注入支持自定义注解进行注入逻辑处理
持久化(JDBC)
  • 优化重构持久化实体代码生成器并美化日志输出格式
  • 优化分页对象构造方法
  • 完善关于实体及属性命名过滤器参数的文档说明
  • 优化通过实体或查询对象进行分页查询时统计记录总数的SQL语句将自动去除OrderBy排序子句的拼装
服务 (Serv)
  • 增加注册客户端和服务端监听接口方法

Release v2.0.2

11 Sep 01:53

Choose a tag to compare

主要更新内容:

核心(Core)
  • 优化框架初始化过程中出现异常将导致服务无法停止的问题
  • 优化事件监听处理逻辑
  • 优化拦截器代理缓存逻辑
  • 新增支持package级拦截器配置
  • 新增@Around注解用于简化同时配置前置和后置拦截器
配置体系(Configuration)
  • 优化配置模块代码结构和配置文件分析处理逻辑
  • 优化配置文件判断逻辑和日志输出
WebMVC
  • 调整控制器请求解析器默认使用restful模式
  • 优化CookieHelper类使支持HttpOnly设置并调用其构造方式适应更多使用场景
  • 优化控制器请求过滤器规则判断逻辑排除WebSocket请求
持久化(JDBC)
  • 新增函数接口及常数据库函数方法封装
  • 新增堆栈跟踪功能以方便定位SQL调用关系
  • 优化FieldsCond对字段前缀和名称组件的处理逻辑
  • 优化框架销毁过程中进行日志输出时可能产生的空指针异常
  • 优化数据库会话开启方式和数据实体获取连接的逻辑
  • 优化数据库实体基类允许直接指定数据源名称

Release v2.0.1

05 Jun 08:05

Choose a tag to compare

更新记录:

核心 (Core)

  • 优化类扫描逻辑被声明@ignored注解的类将被自动扫描程序忽略;
  • 优化BeanWrapper为其新增类属性过滤器接口及相关方法;
  • 优化获取类方法参数名称集合的逻辑及相关代码,若找不到或Missing时不会抛出异常而是返回元素数量为0的空数组;
  • 增加拦截器全局规则设置,调整拦截器可以不用修改代码;
  • 为BlurObject对象添加对Clob和Blob数据类型的支持;
  • Fastjson存在高危安全漏洞,已更新升级至1.2.28;
  • 调整Events事件触发模式由事件监听者在订阅事件时决定;
  • 重新调整代理类的执行顺序Order参数值并改成注释为数值小的最先执行;
  • 优化Base64方法调用;

配置体系 (Configuration)

  • 修正尝试通过运行时变量或系统变量获取CONFIG_HOME参数的处理逻辑;

持久化 (JDBC)

  • 优化数据库连接失败会导致服务启动不成功的问题增加尝试重新初始化逻辑;
  • 实体代码生成器新增允许在指定字段上配置是否使用@readonly注解声明;
  • 优化BaseEntity实体基类增添find、findFirst和findAll方法重载;
  • 数据实体生成器新增实体及属性命名过滤器接口, 允许为那些老旧数据库(命名不规范或有中文字段名等情况)自定义实体和字段名称;
  • 优化使其基础数据实体类内部对象在进行JSON序列化时将不被输出;
  • 优化实体基类的delete方法返回值逻辑;
  • 修正数据实体结果集处理器由于Oracle数据查询时返回的字段名是大写字符导致实体对象无法正确赋值的问题;
  • 优化JDBC操作器的异常日志输出以减少重复;
  • 为SQL类对象增加直接转换的toSQL方法,同时优化field方法降低字段前缀操作频次;
  • 修正ResultSet资源未关闭并移除无用的局部变量;
  • 修正类构造方法中未对参数进行赋值;

Web框架 (WebMVC)

  • 优化请求编码处理逻辑;
  • 优化JSON视图对象可以设置属性使用引号的开关方法;
  • 优化当加载本地语言参数值无效或解析错误时可能会导致异常的情况;
  • 调整将Cookie数据加解密返回的字节数组强制转为Base64编码;
  • 优化JsonView对象支持设置是否保留空值属性;
  • 防止WebMVC未成功初始化时导致的事件源对象为空的异常情况发生;
  • 优化WebMVC请求处理过程的日志输出;
  • 优化控制器请求解析器更完美支持RESTFul风格,可以通过参数request_mapping_parser_class=restful开启配置;
  • 优化CookieHelper的使用并调整其对value的加解密逻辑以及统一Base64方法的调用;

验证 (Validation)

  • 调整邮件地址验证器正则表达式使其支持后缀长度超过3位的域名;

缓存 (Cache)

  • 初步实现缓存锁相关逻辑;

日志 (Log)

  • 优化框架销毁时的日志输出可能产生空指针异常的情况;
  • 日志相关模块代码逻辑优化使其更好的将commons-logging和slf4j等日志系统与log4j进行融合;

Release v2.0.0

06 Feb 05:13

Choose a tag to compare

CHANGE LIST:

核心 (Core)

  • 优化框架初始化逻辑, 优先加载ymp-conf_DEV.properties配置文件并强制设置ymp.dev_mode=true;
  • 优化ClassUtils类的duplicate方法, 当首次赋值发生异常时, 若成员变量值不为null则尝试再次类型转换;
  • 优化@ContextParam注解的参数处理逻辑使其value属性可以通过$xxx的格式支持从框架全局参数中获取值;
  • 优化ExpressionUtils表达式工具类为其增加获取变量名称集合和清理变量占位符方法;
  • 优化Event默认事件管理提供者接口实现;
  • 优化代理并增加@CleanProxy注解可用于清理不必要的代理绑定;
  • 优化拦截器逻辑, 非公有方法和Object类方法将不被拦截处理, 同时也可以通过声明@Ignored注解使类方法忽略一切拦截器配置;
  • 优化BlurObject类型转换逻辑并修正转换BigDecimal和BigInteger类型时可能产生空指针异常的问题;
  • 优化RuntimeUtils运行时工具类获取应用根路径方法, 防止产生空指针异常情况;
  • 优化CodecUtils类并新增PBERSA对称加密类方法;
  • 新增ymp.excluded_files包文件排除列表配置项, 用于在框架自动扫描过程中排除指定的JAR包或ZIP文件等;
  • 新增PropertyStateSupport类配合@PropertyState注解记录成员属性值变化并允许复制任意相同属性的值(支持空值过滤);
  • 修正II18NEventHandler未设置时加载资源会出现空指针异常;
  • 修正I18N本地线程未清理导致数据混乱的问题;

配置体系 (Configuration)

  • 修正解析XML配置文件中property标签下value节点数量为1时, 该节点内容将作为property节点的属性值;
  • 新增必要的日志内容输出;

持久化 (JDBC)

  • 完善JDBC存储过程操作器接口IProcedureOperator及其默认实现类DefaultProcedureOperator的操作逻辑并支持泛型;
  • 优化操作器异常日志输出, 防止发生异常丢失的情况;
  • 优化ResultSetHelper类为其增加直接获取结果集中第一个元素的包装对象方法;
  • 优化MySQLDialect方言为其增加支持通过实体生成数据表结构的新特性;
  • 优化数据源适配器,在销毁数据源时将驱动的解注册代码移至抽象类中, 避免其它数据源出现JDBC内存泄漏的警告;
  • 优化日志输出和潜在的连接池泄漏隐患;
  • 优化分页参数若pageSize=0则返回DEFAULT_PAGE_SIZE常量值;
  • 优化实体生成器的复合主键处理逻辑并添加表结构日志输出;
  • 优化实体生成器配置增加类成员属性值状态变化注解开关并更新模板;
  • 优化实体生成器并添加了REMARKS字段属性的读取但未在模板中输出;
  • 优化实体生成器的数据表名称排除列表参数添加"*"通配符支持;
  • 为实体生成器增加视图支持(视图通过实体声明@Readonly只读, 视图仅支持查询操作);
  • 为生成视图实体对象的id属性做兼容处理;
  • 当数据表字段(非主键)名称为id时将生成set_Id/get_Id方法与实体接口方法setId/getId区分开, 主要为适应老旧的数据表结构, 应尽量避免使用id做为非主键字段名称;
  • 新增方法可以根据逻辑表达式运算结果决定是否采纳Cond条件;
  • 新增BeanResultSetHandler结果集处理接口实现类用于将数据直接映射到类成员属性;
  • 新增@ShardingRule注解和IShardingable接口实现分库分表的能力, 后续完善常用的拆分规则;
  • 新增BaseEntity对象分库分表的支持以及通过实体创建或删除数据表相关方法;
  • 新增通过@Repository注解执行自定义或读取配置文件中指定的SQL语句并支持自定义参数占位符${xxxx}的形式的新特性;
  • 优化Fields对排除标识的处理并让Cond更友好的处理字段前缀拼接;
  • 优化Cond条件对象增加用于生成条件辅助表达式1=1的方法;
  • 优化Select语句对象并增加Page分页属性及方法;
  • 修正Where条件中的GroupBy子句被忽略的问题;
  • 修正数据实体赋值时找不到实体属性配置而产生的空指针异常问题, 仅当对SQLServer数据库分页查询时会出现此类问题;
  • 修正实体生成器对无符号数值类型的判断;
  • 修正实体生成器对字段是否可为空的判断;
  • 修正部份重载方法的分页参数传递问题;
  • 修正误引入JDK1.7中才有的接口类导致在1.6下编译错误, 目前已成功在JDK1.6.0_43下编译通过;

Web框架 (WebMVC)

  • 优化控制器参数注解使其支持从其它作用域下尝试获取参数值;
  • 优化控制器获取请求参数方法逻辑使其先执行拦截器然后再执行参数验证;
  • 优化控制器请求参数及请求头配置'name=*'的判断逻辑;
  • 优化控制器日志中增加线程名称和执行消耗时间的输出;
  • 优化文件上传相关逻辑, 新增IMultipartRequestWrapper接口以便支持单元测试框架很好的完成模拟测试;
  • 优化缓存元素的过期时间处理逻辑并完善对@ResponseCache注解处理过程, 提供IWebCacheProcessor接口默认实现以支持对视图执行结果缓存处理;
  • 完善IWebCacheProcessor接口默认实现类对scope参数的处理;
  • 完善@ResponseCache缓存处理逻辑使其对Scope.DEFAULT支持Last-Modified等浏览器相关配置及GZIP压缩等特性;
  • 优化@ResponseCache缓存Key生成逻辑, 使其支持I18N区别不同的语言;
  • 优化@ResponseCache缓存处理逻辑;
  • 优化视图对象并调整更多视图对@ResponseCache的支持;
  • 优化二进制流视图对内容长度ContentLength的计算逻辑;
  • 优化CookieHelper增加是否使用URLEncoder/URLDecoder编码的开关方法allowUseURLCoder;
  • 修正控制器方法由于未进行参数转义开关的判断导致可能出现的空指针异常;
  • 修正控制器请求参数默认值未处理的问题;
  • 修正HttpServletRequest对象添加属性时的线程安全问题;
  • 修正请求参数代理仅处理控制器中声明@RequestMapping的方法;
  • 增加parameter_escape_order配置项, 用于控制请求参数转义的执行顺序, 支持参数验证之前(before)或之后(after);
  • 增加default_enabled_cookie_auth配置项, 用于控制Cookie密钥验证是否默认开启;

验证 (Validation)

  • 优化验证框架在特定情况下无法正确获取属性参数值的问题;
  • 优化@VField注解处理逻辑, 解决类方法参数名称相同时的冲突问题;
  • 允许@VField注解的namelabel参数支持I18N取值;
  • 调整@VLength验证器支持数组类型参数的长度验证;
  • 通过@VLength验证器的minmax参数相等来验证字符串或数组是否等于指定长度;
  • 允许验证器读取@ContextParam上下文配置参数;
  • 允许验证器注解自定义I18N资源文件名称;

缓存 (Cache)

  • 优化ICacheProvider接口实现类获取缓存对象的方法逻辑, 调整为当由参数name指定的缓存对象不存在时创建它;
  • Multilevel模式增加可选扩展参数, 用于配置是否自动同步MasterSlave级缓存;
  • 修正并明确缓存时间单位为秒;

日志 (Log)

  • 优化日志输出请求参数和回应状态值;
  • 优化日志输出类名不完整的问题;
  • 优化并调整日志级别的判断逻辑;
  • 优化日志内容输出逻辑和获取日志记录器方式;
  • 调整默认配置使其按小时输出日志;
  • 调整日志记录方式及事件参数;
  • 添加SimpleLogger配置样例;
  • 添加SimpleLog配置样例;

服务 (Serv)

  • 修正可能产生空指针异常的情况;
  • 修正读取服务端配置问题;

插件 (Plugin)

  • 优化插件工厂类加载器使其支持框架的包文件排除列表参数配置项;

Release v2.0 GA

22 Feb 02:31

Choose a tag to compare

没有完美的框架,只有适合的才是好的,为了让YMP更简单易用,从2015年1月26日正在开始了v2版本的开发,用了整一年的时间对YMP进行重构,在新版本中包含大量在v1使用过程中收集的新特性、功能改进和代码优化,万变不改初心,让开发工作像搭积木一样轻松是我们一直不懈努力的目标!

#####主要技术特性:

  • 采用组件化、模块化打包方式,可按需装配,灵活可扩展;
  • 采用微内核实现Autoscan、AOP、IoC、Event等,涵盖SSH框架中绝大部分核心功能;
  • 统一配置体系结构,感受不一样的文件资源配置及管理模式;
  • 整合多种日志系统(log4j、jcl、slf4j)、日志文件可分离存储;
  • 轻量级持久化层封装,针对RDBMS(MySQL、SQLServer、Oracle等)和NoSQL(MongoDB、Redis等)提供支持;
  • 完善的插件机制,助力于更细颗粒度的业务拆分;
  • 独特的独立服务开发体验;
  • 功能强大的验证框架,完全基于Java注解,易于使用和扩展;
  • 灵活的缓存服务,支持EhCache、Redis和多级缓存(MultiLevel)技术;
  • 配置简单的MVC架构,强大且易于维护和扩展,支持RESTful风格,支持JSP、HTML、Binary、Freemarker、Velocity等多种视图技术;