【发布时间】:2020-05-23 00:20:00
【问题描述】:
我正在尝试将 DeltaSpike (LocaleResolver) 提供的默认实现替换为我自己通过@Alternative 提供的实现。
@Alternative
@RequestScoped
public class ExampleLocaleResolver implements LocaleResolver {
}
<alternatives>
<class>org.example.app.ExampleLocaleResolver</class>
</alternatives>
似乎使ExampleLocaleResolver 成为选定bean 的唯一方法是使用@Priority 或@Specializes。
例如,以下两个工作得很好:
@Priority(1)
@Alternative
@RequestScoped
public class MyLocaleResolver implements LocaleResolver {
}
@Specializes
@RequestScoped
public class MyLocaleResolver extends DefaultLocaleResolver {
}
我的理解是,使用 CDI 1.1+,应该可以用替代方案覆盖库中的 bean,而无需任何黑客攻击。
有人可以帮我理解为什么我无法在没有 @Priorty 注释的情况下注入 @Alternative bean 吗?
【问题讨论】:
标签: java cdi weld deltaspike