Weld 扩展是一组可移植的服务和实用类,用于 CDI,为扩展和应用程序开发提供了一个良好的基础层。您可以在这次我给出的采访中了解更多关于我们计划的可移植扩展的类型 中。
可注入的日志记录器
Weld 扩展包含一个基于 slf4j 的可注入日志记录器。默认情况下,将使用完全限定的类名作为类别
class Sparrow {
@Inject
private Logger log;
...
}
或者您也可以指定一个类别
class Finch
{
@Inject @Category("Finch")
private Logger log;
...
}
管理资源流
Weld 扩展还包含从类路径加载的资源的管理资源流(当豆子超出作用域时,流将自动关闭)
@RequestScoped
class ResourceClient {
@Inject @Resource("/META-INF/config.xml")
InputStream inputStream;
public void parse() {
// TODO Parse the inputStream!
}
}
这里在请求结束时将为您关闭流。当然,在开发时间,您通常不知道要解析的文件名,因此您也可以在运行时指定名称
@SessionScoped
class ResourceClient {
@Inject ResourceProvider resourceProvider;
public void parse(String fileName) {
InputStream is = resourceProvider.loadResourceAsStream(fileName);
// TODO parse the XML!
}
}
在这里,当会话销毁时,将为您关闭流。
目前,仅支持从类路径加载资源,但我们将很快添加从 Servlet 上下文加载资源的支持。正如您所看到的,这可以大大简化使用输入流!
核心 CDI 编程模型的扩展
Gavin 在他的博客中讨论了 CDI 编程模型的许多改进,其中一些包含在这个版本中。包括
扩展包 目前在 Maven 中可用,我们欢迎在 Weld 论坛 或 JIRA 中提供反馈。感谢 David Allen 提供的可注入日志记录器以及 Gavin King 和 Stuart Douglas 对核心 CDI 编程模型的扩展。