- 9.3. Release Hasor v2.x
- Hasor v2.5.2 (2016-12-01)
- Hasor v2.5.1 (2016-11-08)
- Hasor v2.5.0 (2016-10-26)
- Hasor v2.4.6 (2016-10-07)
- Hasor v2.4.5 (2016-09-29)
- Hasor v2.4.4 (2016-09-05)
- Hasor v2.4.3 (2016-08-18)
- Hasor v2.4.2 (2016-08-04)
- Hasor v2.4.1 (2016-08-01)
- Hasor v2.4.0 (2016-07-29)
- Hasor v2.3.3 (2016-06-16)
- Hasor v2.3.2 (2016-05-29)
- Hasor v2.3.1 (2016-04-13)
- Hasor v2.3.0 (2016-04-06)
- Hasor v2.2.0 (2016-02-23)
- Hasor v2.1.0 (2016-01-17)
- Hasor v2.0.0 (2015-11-27)
9.3. Release Hasor v2.x
Hasor v2.5.2 (2016-12-01)
- 新增
- 新增 MyBatis 插件,该插件会依赖 DBModule。
改进
整理出一个 Provider 实现工具类包。
BindInfoBuilder 接口迁移位置。
Hasor v2.5.1 (2016-11-08)
- 新增
新增 JFina 插件支持。HasorPlugin、HasorInterceptor、HasorHandler 三个插件。
AppContext 新增两个 justInject 方法用于对某个标记了 Hasor 注解的对象执行依赖注入。
SpringModule 插件类,增加 DefaultHasorBeanName 常量,表示当 Hasor 和 Spirng 集成时。如果 Spring 中的那么默认 Bean ID。
改进
Spring sechma 升级到 2.5.1。factoryID 不再是强制输入。如果没有配置 factoryID 会采用 “net.hasor.core.AppContext” 为默认名。
简化 Spring 集成,取消与 Spring 的 Event 双向打通机制,如果开发者需要该功能可以自行基于 Spring 实现。
Hasor 在启动的时候可以从外面传递 Map 来指定环境变量了。之前只能通过 env.config 来指定环境变量。
增加 WebHasor 类,继承自 Hasor 类提供方便的 WebAppContext 初始化入口。
修复
Fix 因 ClassLoader 不同而导致的 shutdown 过程中可能的异常抛出。
Fix Spring集成时,无法使用最简化 Hasor 配置的问题。
Hasor v2.5.0 (2016-10-26)
- 新增
新增 ClassAwareProvider、InfoAwareProvider 两个工具类。
Hasor 新增一个 autoAware 方法的重载。
新增 Hasor 和 Junit 的整合,通过 Junit 做 Hasor 单元测试更加方便了。
ApiBinder 接口新增 getBindInfo、findBindingRegister 两组共计4个方法,现在 init 期间也可以查询其他模块注册的 Bean 了。
BeanBuilder 接口增加 getBindInfo、findBindingRegister 两组共计4个方法。其子类加以实现。
AppContext 的 getBindInfo、findBindingRegister 方法实现沉降到 BeanBuilder 实现类中。
改进
升级依赖 slf4j-api 到 1.7.21 版本。
删除 ContextEvent_Initialized 事件,该事件等同于 Module 的 loadModule。
ContextShutdownListener、ContextStartListener两个内部接口提升为 Hasor Api接口。
findModules 过程提升到 doInitialized 之前。
改进 BeanContainer 使其可以实时检测 ApiBinder 使用期间出现的 id 冲突等问题。而不是等待 init 后期最统一检测。
Hasor v2.4.6 (2016-10-07)
- 新增
restful插件增加,json; 拦截。
WebEnvironment、WebAppContext可以被依赖注入了。
所有接口类型参数传入,都走 AppContext 获取。
upload包变更。
新增 WebAppContext.HTTP_BEFORE_REQUEST 和 WebAppContext.HTTP_AFTER_RESPONSE 事件。
新增了 ScopeManager 接口用于优化 Scope 的注册。
改进
改进 RenderData 接口使其更加人性化一点。
RenderData 的数据不在保存在自己独立的 map 中而是共同 Request Attr。
@ValidBy 注解支持配置多个表单验证器。
修复
- fix restful插件,action方法中无法传入 response 的问题。
Hasor v2.4.5 (2016-09-29)
- 新增
BindInfo 新增 setMetaData 方法以设置元信息。
BindInfo 新增 removeMetaData 删除元数据的方法。
BizCommon 包增加 log 工具。
Spring 集成插件,新增支持将 Spring 容器中的 属性配置文件导入 Hasor 作为环境变量。
@InjectSettings 注解支持通过 “${xxx}” 形式解析并注入环境变量了(至此注入环境变量不再需要通过 hasor 配置文件中转)
改进
JSON 包简化了对 Log 的输出处理,减少了 5 个日志相关类。
Spring集成时,支持通过 Spring 方式来指定 Hasor 的配置文件。
Spring集成下,env.config 将会失效,环境配置属性需要通过 Spring导入。
AbstractEnvironment 类的 afterInitEnvironment 方法取消参数传入。
AbstractEnvironment 类的 initEnvironment 方法增加boolean参数来决定是否启用 env.config 配置文件。
LinkedCaseInsensitiveMap类提升为公共工具类,包位置发生变更。
修复
Fix Settings 接口的 add & remove & set 系方法,解决 settings key 出现大小写敏感问题。
Fix AbstractEnvironment 的 refreshVariables 方法,忽略了对默认值的替换,导致了bug出现。
Fix Environment 接口拼写错误的方法名。remoteEnvVar -> removeEnvVar。
Hasor v2.4.4 (2016-09-05)
- 新增
宽泛的Servlet版本支持 servlet 2.3 到 servlet 3.1。
新增支持文件上传功能支持。
新增 @Async 注解,用于标记 restful 请求是否以 异步 servlet 方式执行。(需要容器支持 servlet 3 ,否则无效)
如果容器支持 Servlet 3 那么 Hasor 会自动启用 Servlet 3.0 特性。
servlet3: 基于 web-fragment 技术,您的 web.xml 中不需要任何配置或者您干脆删除 web.xml。
servlet3: 支持通过@Async注解开启异步Servlet。
servlet3: 文件上传共功能可以基于@Async转为异步文件上传(感谢:哎瑞!麓孩 提供的实现思路,这里是他的blog, http://ysj12.lofter.com/)。
改进
otg.more包瘦身前的一些调整。
WebController类中方法访问修饰符调整。
Hasor v2.4.3 (2016-08-18)
- 新增
- 新增 Htmlspace工具类:StringEscapeUtils、EntitiesUtils。工具来源为:apache-common
改进
改进启动日志输出。
WebController 增加一组 putData 方法用于输出到渲染模版中。
JdbcOperations接口可以通过依赖注入被注入到 Service 中。
TransactionTemplateManager 代码优化,修复潜在的 npe 异常情况。
ValidErrors 接口继承自 RenderData 获取参数更加方便。
WebController 类重度优化,删除了一些重复的方法,增添表单验证相关的方法。
Hasor v2.4.2 (2016-08-04)
- 新增
Restful 框架整合 Validation 插件增加请求参数 @Valid 验证功能。
注解 @Valid 支持场景化验证。
改进
env.config 加载环境变量遇到名称冲突时的,Bug。
DBModule 类,在声明 Aop 类匹配的时候从任意类,改为需要标记 @Transactional 注解的类。
Hasor v2.4.1 (2016-08-01)
- 改进
- env.config 功能的优化。
Hasor v2.4.0 (2016-07-29)
- 新增
新增 DecSpaceMap 可以将多个Map合并成一个Map对象给予操作,每个子map可以通过一个空间字符串进行标识。
AbstractSettings 类增加 resetValues 方法,可以通过 UpdateValue 接口更新载入的配置文件数据,一个典型的应用场景是模版化配置文件。
支持配置文件模版化,通过模版化的配置文件。可以在不修改部署包的前提下,替换配置文件的值。使其可以方便的适用于各种环境,例如:日常、预发、线上、隔离。
新增 @InjectSettings 注解,支持配置文件数据注入。
Restful、Template、mime 三个小插件整合到一起,提升为 webmvc 框架,编程接口依然以 Restful 为标准。
Render渲染器,支持多种,并通过viewType可以动态指定。
依赖注入支持 WebAppContext、WebEnvironment 两个接口的注入。
改进
配置文件加载在原有xml格式下新增 “属性类型” 文件的加载支持,属性文件默认采用UTF-8编码方式读取。
Settings 接口的两个 findClass 方法移动到 Environment 接口中 Settings的职责更佳明确,只负责配置文件相关的操作。
删除 AbstractMergeSettings 不在需要该类承担数据的职责,Settings的数据承载交给 DecSpaceMap。
Settings 小范围重构,内部的数据管理更佳清晰。
StartupModule插件的类装载,使用 Environment 接口提供的。
Resource 插件被拆分成两个部分。web相关的部分降级到demo中,资源加载部分沉淀到 org.more 工具包。
Encoding 插件被降级成为 demo 的一部分。
Hasor v2.3.3 (2016-06-16)
- 新增
- 新增@ImplBy注解,用于方便接口注入。
Hasor v2.3.2 (2016-05-29)
- 改进
事件机制,callBack.handleComplete的调用实际改为,事件处理结束。
一些方法的注释进行更正。
新增datachain工具,可以脱离Hasor使用:数据对象转换工具,提供 A 类型对象到 B 类型对象转换功能。并使开发者在转换过程中可以实现更加高级别的控制协调能力。
Result增加一系列Message相关方法。
插件智能载入。所有内置插件,在初始化的时都做了配置检查,只有用到了它们才会被加载到框架中。否则内置插件在初始化期间就会放弃加载自己。
Hasor v2.3.1 (2016-04-13)
- 修复
- Fix :AbstractMergeSettings在刷新加载配置文件的时,因为map无序而导致。主配置文件被率先放入最终结果集中,正常的逻辑应该是最后放入。
Hasor v2.3.0 (2016-04-06)
- 新增
新增“.hasor.default.asEagerSingleton”配置用来配置默认情况下,类型是以单例模式运行还是以原型方式运行。(默认单例模式)
ApiBinder接口新增“asEagerPrototype”方法用来强制以原型方式注册。到目前为止可以选择的方式有:“asEagerSingleton”、“asEagerPrototype”
新增注解配置:@Singleton、@Prototype
单例类如果配置了@Init注解,则在注册到Hasor容器时,会在容器启动的第一时间自动调用init方法以完成对象初始化功能。这个特性类似Spring配置文件中 init属性的功能。
Hasor启动类新增传入File参数方式指定配置文件。
改进
容器在启动时增加EventContext类型的绑定,开发的时候可以直接通过依赖注入或者appContext.getInstance(EventContext.class)方式的到。
Event插件在接收到事件响应时,需要一直等待AppContext对象被注入进来。原有逻辑是等待10秒注入AppContext对象。
优化EventModule启动时间。
事件处理线程命名。
改进环境变量处理方式,凡是Hasor中定义的环境变量其优先级都高于系统环境变量。这意味着,定义相同名称的环境变量Hasor中配置会覆盖系统的配置。
Hasor v2.2.0 (2016-02-23)
- 新增
增加Event事件注册插件,简化事件的注册机制。
Settings接口增加 addSetting方法和clearSetting方法用来增加和删除配置项。
- 新增Spring插件,完美与Spring整合。同时支持与Spring的双向事件通知。
支持Hasor的Bean通过Spring获取、支持SpringBean通过Hasor获取。
支持Hasor的事件,通过Spring方式接收、支持Spring的事件,通过Hasor方式接收。
改进
改进事物管理器的拦截器注册机制,从拦截所有类改为只拦截标记了Transactional注解的方法。
ResourceModule插件的实现机制从 Servlet 改为Filter,当资源无法通过插件获取时候,转交给servlet容器。原有方案是直接抛除404。
RestfulModule插件的实现机制从 Servlet 改为Filter,可以通过WebController类中renderTo方法指定具体要渲染的模版,模版渲染更加灵活。
RestfulModule插件的实现机制从 Servlet 改为Filter,支持ContextMap中setViewName方法来指定渲染的模版。
环境变量,WOR_HOME 从 USER.DIR 更换到 USER.HOME。原因是,USER.DIR 工作目录获取并不是想象的那样始终是在程序位置。
SaxXmlParser类优化,在处理配置项冲突时,升级为保留全部配置。原有逻辑为合并覆盖。
Event接口在传入参数时不再使用“Object[]”方式,改为范型T,这样做简化了开发者在使用事件机制时各种类型转换的麻烦,从而减少错误的概率。
Hasor v2.1.0 (2016-01-17)
- 新增
增加一个WebDemo示例工程。
新增一个插件,简化“modules.module”的配置。
新增restful插件,做为hasor内置Web开发插件。
添加templates插件,该插件将提供模版渲染支持。
改进
修改ShutdownHook钩子。在start时注册它、当shutdown时解除注册。
增加Environment接口的包装器。
为@Inject注解,增加Type枚举。通过枚举可以标识注入是:ByID 还是 ByName。
剔除JSP自定义函数功能。
resource插件在,选择缓存目录时,如果连续失败99999次。将会报一个错误,然后终止插件的启动。
templates插件与resource插件,整合了mimetype插件功能。
Valid插件增加@ValidDefine注解方式定义验证。
修复
Fix “Shutdown in progress”异常。
Fix Web模式下启动空指针异常。
Fix @Inject 注解携带value参数时失效的问题。
Fix JdbcTemplate使用Result->Object映射时,最后一个参数应设值丢失的问题。
Hasor v2.0.0 (2015-11-27)
- 新增
新增 @Inject、@Init 两个注解以支持注解方式的自动注入。
添加 ShutdownHook钩子,当外部终止jvm的时候,Hasor可以引发shutdown过程。
事务管理增加“TransactionTemplate”接口。
启动过程中增加了一些 log 的输出。
将jetty的JSON解析器代码添加到Hasor工具代码中,位于包“org.more.json”。
新增WebApiBinderWrap类。
ASM包升级为5.0版本,原有的ASM组建在解析jdk1.8的类文件时会有异常。
改进
StandardEnvironment构造方法改进。
StartModule接口更名为LifeModule,并新增了onStop方法。至此通过LifeModule接口可以得到模块整个生命周期。
AbstractEnvironment类的initEnvironment方法增加Settings类型参数。createSettings方法不再属于AbstractEnvironment的抽象方法。
StandardEnvironment类增加Settings类型参数的构造方法。
MimeType接口增加getContent()方法。
原有模块在实现 StartModule 接口时,如果是通过启动参数或者配置方式的模块,器onStart调用时间点在“ContextEvent_Started”事件之后。现改为引发“ContextEvent_Started”事件时。
MVC的插件分离成独立插件。
db包“datasource”模块重构、简化逻辑,它不再提供数据库连接和当前线程的映射绑定。
事务管理器模块大量优化,同时“Manager”更名为“TranManager”。可以更好的让人理解。
事务管理器负责提供数据库连接与当前线程的绑定关系。
删除ResultModule类和其相关的功能,该功能不再是核心功能的一部分。
MVC框架被迁出 Hasor框架成为一个独立的Web开发框架名为“haweb”。
修复
大量优化。。
Fix,classcode模块对long、float、double基本类型错误处理的问题。
AbstractClassConfig增加对 java javax 包类的排除,凡是这两个包的类都不进行aop。