【发布时间】:2016-01-20 18:28:30
【问题描述】:
Env:
Wildfly 9.0.1
Weld 2.2.14
我目前正在研究在我们的旧代码库中合理使用 CDI @Decorator 的可能性。
查看规范和 java ee 7 示例,CDI @Decorators 似乎是
- 在编译时定义。好吧,至少是他们的名单
- 不能像经典装饰器那样在运行时装饰对象 模式
引用经典的 Pizza and Toppings 示例,可以在运行时创建任何深度的加满披萨。例如:new Cheese(new Ham(new Pepper(new LargePizza())))
CDI @Decorator 可以做到这一点吗?如果不是,@Decorator 的真正用途是什么,您必须在编译时声明对象,即使用 @Decorator 和 @Delegate(以及 beans.xml 中的列表)?可能是我在这里遗漏了一些东西。
提前致谢,
拉克什
【问题讨论】:
-
我使用装饰器的一种方法是通过使用某种缓存来隐藏对实际服务调用的昂贵调用。这只是在我无法使用某种缓存拦截器逻辑的情况下
标签: java jakarta-ee design-patterns cdi decorator