=============================================
# 此版本更新日志用于2.15.*版本
=============================================

2.5.0
1. 修复了在实体类转Pojo类导致的类型转换错误
2. 将parse方法从ClassUtil迁移到Conver类中。
3. 修复包装类转基本类型的关于Integer的一个bug

2.6.0:
1. 增加SqlBuilder
2. 增加HttpUtil.request方法

2.6.1
SecureUtil中的base64EncodeTable改为私有

2.6.2
丰富ReUtil方法
增加Func类提供一些常用函数（equals或者length）

----------------------------------------------------------------------

2.7.0
1. 增加缓存（com.xiaoleilu.hutool.cache）
2. 增加Validator验证器，用于表单验证

2.7.1
1. StrUtil增加 nullToEmpty和emptyToNull方法
2. StrUtil的convertCharset迁移到Conver类中
3. StrUtil增加 padPre 和 padEnd
4. StrUtil的repeat方法提高性能

2.7.2
1. 去除无用依赖

2.7.3
1. SecureUtil中增加mac算法的加密

2.7.4
1. 增加针对byte的md5方法
2.增加StrUtil.str(byte[])
3. 修复SecureUtil中base64方法

2.8.0
1.增加HTTP模块
2. 修复VelocityUtil空指针问题

2.8.1
1. 修复ClassUtil中报名前缀为空时扫描类失败的错误

2.8.2
1. 修复Strutil.hasBlank方法

2.8.3
1. 增加DaoTemplate
2. 调整SqlExecutor、SqlConnRunner、SqlRunner三个类的功能区分，去除继承依赖

2.8.4
1. 修复DaoTemplate

2.8.5
1. 为VelocityUtil增加Session参数的读取

2.8.6
1. 修复VelocityUtil中Session参数的bug

2.8.7
1. DaoTemplate增加addOrUpdate方法
2. SqlBuilder增加IN，修复WHERE条件为空时WHERE关键字丢失问题

2.9.0
1. 为Velocity添加全局上下文功能

2.9.1
1. 修复db的SqlBuilder中where语句为空导致语法错误

2.9.2
1. 优化Singleton类，轻量化同步

2.9.3
1. 优化代码格局

2.9.4
1. 增加HandleHelper.HandleRow方法，只接受一个ResultSet对象

2.9.5
1. 修复ClassPath带空格和中文导致的Class文件找不到

2.9.6
1. 更新依赖的包版本为最新

2.9.7
1. 修复Oracle的SQL语句中反引号导致的错误
2. 修复空Where语句导致的表名找不到引起的空指针问题（优化错误提示）

2.9.8
1. 修复DaoTemplate中add和update方法默认获取不到当前表名的问题
2. 修复Entity的fillVo方法返回对象错误问题

2.9.9
1. StrUtil.encode和byte方法重了，并修改方法内容，使charset为空时使用平台相关字符集
2. HttpUtil中获得客户端IP地址处理多级反向代理

2.9.10
1.修复Oracle无自增主键insert报错问题

2.10.0
1. 扩展insert方法，使之返回插入行数、主键、Long型自增主键并存

2.10.1
1. 扩展DaoTemplate方法

2.11.0
1. FileUtil中增加normalizePath方法
2. 增加ZipUtil

2.11.1
1. 修改XmlUtil

2.11.2
1. 增加getAbsolutePath方法
2. 增加URLUtil.getPath方法

2.11.3
1. 修改InjectUtil，支持忽略大小写

2.11.4
Entity中toVo区别是否忽略大小写

2.11.5
1、修复HTTP模块中空参数导致的空指针问题

2.11.6
1、修复LogWraper的问题
2、修复isURL验证错误问题

2.12.0
1、FileUtil增加递归获取文件目录的方法
2、增加JarClassLoader类，用于加载外部Jar文件

2.12.1
1、修复Oracle引号包围和nextval的大小写问题
2、Entity加入字段限制机制
3、增加一些日期方法
4、修复空组GroupedSet的bug
5、增加FileUtil从文件中读取字符串和行

2.12.2
1、Setting继承于BasicSetting，并改用HashTable防止并发问题
2、在Entity中增加clone方法和toString()方法
3、DbUtil中增加方法，用于将表字段加入到Entity，限制Entity内容范围
4、增加CronUtil的一些管理方法，暴露Scheduler对象给用户
5、丰富DaoTemplate方法
6、Conver.toXXX转换为数字的方法加入trim
7、增加EntitySetHandler，用于返回唯一性的结果集

2.12.3
1、修复InjectUtil中toMap方法返回getClass的问题

2.12.4
1、db增加分页，会根据总结果数计算分页的各种参数
2、LogWrapper增加只有一个Throwable参数的日志方法
3、SqlExecutor增加call方法
4、Entity类型的Where参数支持表达式
5、增加计算文件MD5方法（SecureUtil.md5）
6、ClassUtil增加invoke方法，用于动态执行指定对象或类的方法
7、修复Http编码空指针问题
8、修复newArrayList的大坑！

2.13.0
1、强化Log模块，无配置下支持多日志框架

2.13.1
1、FileUtil增加方法判断目录是否为空
2、SecureUtil增加simpleUUID方法
3、修复Map转对象的时候忽略大小写问题（InjectUtil.injectFromMap）
4、修复LogFactory.get()栈溢出问题
5、增加downloadFile方法 for HttpUtil
6、扩充ZipUtil
7、增加数据库连接池
8、修复Http的form多类型问题
9、修复IoUtil.copy未flush的bug
10、Http增加文件上传

2.13.2
1、FileUtil中加入flush
2、修复FileUtil的touch方法创建父目录空指针问题
3、getClob Method
4、增加转换为大写方法
5、完善SystemUtil，并集中于system包中
6、Http模块加入gzip支持
7、解决IoUtil读取文本的问题

2.14.0
1、明确分类
2、加入filter
3、修复Crontab restart不能加载配置文件的bug
4、扩充StrUtil
5、Add HTMLFilter
6、修改getLog为get
7、增加一些工具方法
8、增加BeanUtil
9、增加ConsoleLog
10、CharsetUtil调整
11、调整BloomFilter API
12、增加SettingDruidDatasource
13、修复Conver
14、对Https验证增加自定义方法
15、抽象不同类型对象的getter方法

2.15.0
1、修复SqlBuilder中 Order不支持多字段多向排序问题
2、增加ResourceUtil
3、对Conver做调整
4、对Getter增加类型
5、修改JSON部分，抽象JSON接口
6、正则工具类中增加空值判断
7、规范Close函数，删除FileUtil.close()，统一使用IoUtil.close()
8、修补JSON模块
9、规范FileUtil中的方法名，添加utf-8默认读写方法
10、StrUtil增加str方法，讲Object转为String
11、修复Setting中循环引用问题
12、修改Setting store方法
13、增加Assert类
14、增加Bean属性拷贝

2.15.1
1、对Setting parse 的null不打印日志
2、对对象克隆做了强化，修复无法反射调用父类方法的问题
3、FileUtil中某些方法返回File对象，方便操作
4、对Db中的方法做修正
5、修复FileUtil.loopFiles方法过滤条件为空时全部过滤问题
6、增加startWith和endWith方法
2.15.2
1、IoUtil.copy返回值使用long，防止溢出
2、增加Console类
3、修复Http上传问题
2.15.3
1、修复Http编码问题
2、StrUtil增加containsIgnoreCase方法
3、修复Entity的限制字段bug
4、修复使用HttpResponse读取二进制流转码问题
5、Http模块的Post方法使用默认的Content-Type
6、Http模块设置字符编码无效bug
7、Dict增加toEntity方法，可选参数是否转换为驼峰模式
8、修复Http Get方法的bug

2.15.4
1、Bean转Map可选是否转为下划线模式，Map转Bean可选是否转驼峰模式

2.15.5
1、优化Oracle SQL拼接，使之统一使用SqlBuilder构建SQL
2、debug方式显示SQL
3、SQL格式化功能

2.15.6
1、修复IoUtil中的空指针问题（增加了空指针的消息内容，便于排查）
2、强化JSON中的方法
3、修复HTTP访问HTTPS的错误

2.15.7
1、扩充JSONUtil
2、Conver类中的转换方法添加无默认值的方法
3、StrUtil添加addPrefixIfNot和addSuffixIfNot两个方法
4、FileUtil增加mkParentDirs方法
5、修复DateUtil的注释
6、修复Http Post问题

2.15.8
1、JSONUtil中增加创建JSON对象和JSON数组方法，方便链式构建JSON
2、FileUtil.mkParentDirs方法修正
3、FileUtil增加readJSON
4、强化FileUtil中isEmpty方法，增加isDirEmpty方法（只支持JDK7）
5、[bug fix]修复Http中GzipEOF错误导致的异常（忽略此错误）
6、强化IoUtil和HttpUtil，增加进度条
7、添加Watch模块

2.15.9
1、WatchMonitor增加overflow处理
2、升级依赖以及Maven插件
3、修复Log的FQCN问题（显示行号错误）
4、增加XML和JSON互相转换支持
5、ThreadUtil中sleep方法参数变为Number类型
6、增加对数组toString的方法（CollectionUtil.toString），同时StrUtil.format等格式化的方法支持数组直接格式化
7、db部分的Page对象增加addOrder方法
8、CollectionUtil针对基本类型数组isEmpty
9、JSONUtil增加pauseObj方法
10、增加Charset对象支持

2.15.10
1、增加DFA模块，用于关键词查找
2、Conver.toBool支持更多类型的字符串形式
3、JSON修复构造方法
4、Setting增加getStr方法，分组默认值
5、修复StrUtil.sub中to超出字符串长度出现空格的问题

2.15.11
1、DateUtil增加计算年龄的方法
2、增加ImageUtil类

2.15.12
1、ReUtil和StrUtil中增加count方法，用于统计字符串中指定字符串或字符的个数
2、修复isFile方法
3、归类Log的方言
4、修复DFA截断问题

2.15.13
1、增加DFA的匹配模式选择

2.15.4
1、修复HttpUtil.downloadFile中第二个参数为目录时文件找不到的问题
2、ZipUtil增加多文件压缩
3、修复StrUtil.sub中fromIndex计算错误导致的截取异常问题

2.15.15
1、修复sortPageAll和sortPageAll2方法中越界问题
2、修复布隆过滤添加返回false的问题
3、修复HttpUtil的toParam的encode问题
4、HttpRequest中body方法参数多余问题

2.15.16
1、修复Http post方法参数丢失问题

2.15.17
1、HttpRequest增加方法body(String body, String contentType) 和 body(JSON json)
2、日志部分加入LocationAwareLog，便于再次封装
3、修复StaticLog打印日志行号错误问题
4、修改SecureUtil中sha1为hmacSha1，区别sha1
5、修复Oracle中TIMESTAMP问题（返回类型为oracle.sql.TIMESTAMP）
6、ThreadUtil修改方法getThreadLocal为可选ThreadLocal或InheritableThreadLocal
7、全面优化StrUtil.format方法，增加转义支持
8、增加BeanUtil.isBean方法用于判断是否为JavaBean
9、修复StaticLog错误

2.15.18
1、修复日志无堆栈打印问题
2、修复DateUtil中返回空指针问题
3、增加ClassUtil.isNormalClass和isAbstract方法
4、修复BeanUtil.isBean
5、修复ClassUtil，消除歧义
6、抽象JSON中的getEnum方法

2.15.19
1、Conver类变为Convert类
2、增加Holder接口
3、抽象BeanUtil.copyProperties，支持更多选项
4、DruidDS增加系统关闭的钩子
5、增加CollectionUtil中isEmpty和isNotEmpty for Iterator and Iterable
6、extractMultiAndDelPre使用Holder类代替数组，减少歧义
7、增加FileTypeUtil用于判断文件类型
8、FileUtil迁移至com.xiaoleilu.io中
9、增加HexUtil，同时在Convert中增加toHex等方法，用于转换为16进制

2.15.20
1、修复Setting中的getMap(String group)方法，去除分组头部

=====================================================
2.16.0
1、全面更新db模块中的ds部分，使用工厂类自动选定连接池实现
2、扩充CollectionUtil，增加交集（intersection）、并集（union）、差集（disjunction）方法
3、ds部分增加Tomcat-jdbc-pool的实现
4、ds增加JndiDSFactory，支持JNDI数据源
5、修复各个包中error日志使用问题导致的无法打印堆栈
6、Setting中删除大量重复的方法，统一getXXX
7、扩充HexUtil，增加isHexNumber方法
8、CollectionUtil增加forEach方法，用于支持Map等类型遍历
9、将DateUtil包变更为date，同时拆分格式化模式为单独的类，优化性能。DateUtil中增加方法
10、修复StrUtil.join时传入数组或集合类无法转为字符串问题
11、SecureUtil中decodeBase64增加重载方法
12、CharsetUtil增加defaultCharset方法
13、增加Base64类，支持url safe的encode和decode
14、StrUtil.str方法增加支持Byte[]参数支持
15、ClassUtil中增加原始类和包装类的转换
16、clone包单独成包
17、全面优化Convert，单独成包convert，使用Convert以及其实现类实现可扩展的类型转换
18、JSONObject实现Map接口，JSONArray实现List接口
19、增加代理包(com.xiaoleilu.hutool.proxy)，新增代理和切面功能
20、包扫描独立出来为ClassScaner，ClassUtil中对应方法引用此类方法
21、ClassUil增加getConstructor方法，可匹配继承参数
22、优化ClassPath路径转为绝对路径
23、Direction增加方法从字符串转换（大小写不敏感）
24、添加DigestUtil方法，用于md5、sha1等摘要算法，同时简化SecureUtil，其中md5、sha1方法调用DigestUtil
25、增加Editor接口，用于规范对象编辑器，主要用于集合元素的统一修改
26、修改Filter接口，同时去除ClassUtil中的ClassFilter，使过滤器抽象度更高