HK2:轻量级动态依赖注入框架

hk2

HK2是一个轻量级动态依赖注入框架。

  • HK2是JavaSE环境中JSR-330的一个实现。
  • HK2提供了控制操作和自动加载服务到容器中的API。
  • HK2有强大的功能,可用于运行任务,如查找服务或者定制你的注入。

主要功能

  • 在系统中添加范围(Scope)和上下文(Context)
    在HK2中Context是一个控制服务实例生命周期的类。Scope是在另一个注解上的注解,用于将服务和Context关联。在HK2中所有的服务都和一个单独的Scope关联。
  • 每线程范围控制
    HK2中支持每线程Scope/Context可选对。标记了PerThread的服务有由其所在线程定义的生命周期。
  • 可继承的线程范围
    HK2中支持可继承的线程Scope/Context可选对。标记了InheritableThread的服务有由其所在线程定义的生命周期。
  • 安全
    HK2用户执行的某些操作是可验证的。
  • 代理
    HK2可以向服务中注入代理,而不是注入服务的实例。
  • 类加载
    类加载在任何Java环境中都是有意思的挑战。HK2尽可能的延缓类加载,但在某些注入点,必须获得真实的类才能创建和注入其实例。
  • 自定义注入解析器
    默认情况下系统提供标准的JSR-330注入。然而,在特定情况下用户或许需要自定义JSR-330的方案,或提供基于不同注解的特定的注入点。
  • 按时注入解析器
    有些时候在系统启动前需要注入整套服务。此时可以用按时注入解析器(Just In Time Injection Resolver)。当系统没找到注入点适配的服务时,按时注入解析器就会被调用。如果按时注入解析器知道怎样找到服务,就会添加服务到ServiceLocator并通知HK2再次查找服务。
  • 事件
    使用HK2事件(event)功能可以从一个服务向另一个发送信息。
  • 实例生命周期
    用户可以注册一个InstanceLifecycleListener的实现,在服务创建时获得通知。
  • 拦截
    HK2支持AOP Alliance方法和构造器拦截。使用InterceptionService的实例可以拦截方法和构造器的调用。
  • 动态配置监听器
    用户注册DynamicConfigurationListener的实现,当ServiceLocator中的ActiveDescriptors发生改变时得到通知。
  • 类分析
    HK2通常需要分析一个类,如查找其构造器、方法、成员变量的集合等。
  • 运行级服务
    当一个服务启动或停止时,运行级服务允许制定一个服务的运行级别,当系统运行级别发生改变时重启这些服务。
  • 自描述注入
    任何服务都可以有ActiveDescriptor。一组通用服务有一个共同的父类时,父类可以注入ActiveDescriptor,然后做进一步的处理。
  • ServiceLocator到ServiceLocator的桥
    在Locator之间没有父子关系的情况下,可以从一个ServiceLocator到另一个ServiceLocator导入所有的NORMAL服务(services)。
  • 错误处理
    在HK2的生命周期中错误可以出现在各个阶段。用户可以注册实现ErrorService,当错误发生时获得通知。
  • 操作
    HK2的操作是scope/context对,用于实现:RequestScope、ApplicationScope、TransactionScope的范围类。
  • 存根生成
    HK2有用于抽象类的Stub注解。hk2-metadata-generator将生成实现了没实现的方法的类。

开发文档

官方网站:https://hk2.java.net/2.5.0-b03/
开源地址:https://github.com/hk2-project/hk2

打赏支持我整理更多优质资源,谢谢!

打赏编辑

打赏支持我整理更多优质资源,谢谢!

任选一种支付方式

1 收藏

资源整理者简介:刘立华

java开发,技术爱好者,乐于助人。 个人主页 · 贡献了32个资源 · 1 ·  


直接登录

推荐关注

按分类快速查找

关于资源导航
  • 伯乐在线资源导航收录优秀的工具资源。内容覆盖开发、设计、产品和管理等IT互联网行业相关的领域。目前已经收录 1439 项工具资源。
    推送伯乐头条热点内容微信号:jobbole 分享干货的技术类微信号:iProgrammer