我非常努力地向社区强调,CDI和Weld不仅仅是依赖注入的解决方案。我们并不是从解决依赖注入的角度出发,也不是试图构建一个更好的Spring。
当我开始开发Seam时,我真正思考的是事件驱动架构中的状态管理。你如何确保事件在正确的状态下被处理?我想要摆脱糟糕的前端控制器模式,在这种模式中,一个庞大的无状态方法负责协调处理事件的所有方面,从状态检索和存储到服务定位,再到编排。
在这一点上,有几个框架在当时是超越时代的。其中一个激发了我的是XWork,它是WebWork早期版本中的一部分,是一个依赖注入解决方案。这就是为什么当我看到JSF(除其他问题外)中出现了同样的想法时,我感到非常兴奋。
这也是为什么当有些人质疑CDI中事件通知功能的存在时,我如此坚决地反对。虽然这看起来像是依赖注入容器旁边的一个可爱的小功能,但这对我而言根本不是这样。实际上,事件处理的想法正是我们试图在JSR-299中实现的核心。