新的JSR299“Java EE的上下文和依赖注入”似乎是基于“作用域”的概念。
创建bean并将其关联到受支持的作用域之一:应用程序、会话(映射到HTTP会话)、会话和请求。
如果没有HTTP会话(例如,通过EJB远程处理公开功能的企业应用程序),因为托管Beans不会与任何上下文相关联(因为它们不存在),那么使用CDI有意义吗?
在这样的场景中使用CDI是可能的吗?它会给它带来哪些好处?
发布于 2012-01-26 19:34:02
这让我想起了我之前问过的问题:How does @SessionScoped work with EJB? Is CDI only for web-tier?
似乎“作用域”的概念只在HTTP会话的情况下是相关的。
但是,我可以将@ApplicationScoped作用域作为实现应用程序单例bean的一种有效方法,尽管请求是HTTP请求。
Javadoc说:
应用程序范围处于活动状态:
(...)
发布于 2012-01-26 23:23:57
您还可以创建自己的作用域。CDI具有很强的可扩展性,可以在各种情况下使用。它也被用于既没有HttpSession也没有HttpRequest的SE应用程序中。
发布于 2012-03-16 22:58:09
除此之外,CDI不仅用于生命周期管理,您还可以使用它进行依赖注入,从而以一种非常干净的方式将接口与其实现分离。您还可以使用拦截器和装饰器执行一些AOP技术,或者通过利用CDI事件构建一个非常松散耦合的观察者模式。
https://stackoverflow.com/questions/9016937
复制相似问题