我知道我可以让我们ProcessAnnotatedType.veto()忽略这个豆。
但是,我想忽略生产者提供的bean。例如:我想在生产环境中忽略这一点
@Produces
@ApplicationScoped
@Development
EnvironmentDao developmentDao() {
return new DevelopmentDao()
}
有人有线索吗? 谢谢。
@Update 实际上我有另一个解决方案,如
@Development
@ApplicationScoped
class DevelopmentProducer {
@Produces
EnvironmentBean developmentBean = new EnvironmentBean() {
@Override
String getText() {
return 'I am DevelopmentBean'
}
}
@Produces
@ApplicationScoped
EnvironmentDao developmentDao() {
return new DevelopmentDao()
}
}
这样我就可以使用ProcessAnnotatedType来忽略这个Producer。但是,我想知道是否有任何方法只是忽略生产者方法而不是整个生产者?
谢谢。
答案 0 :(得分:2)
CDI没有提供禁用制作人的简单方法。
事实上,事件@Alternative
无法奏效。但是,@Specializes
将起作用,因为bean类将被真正删除,因此找不到生成器。但那不是你以后的那种。
您还可以使用Extension
并观察ProcessProducer
事件。它不提供否决方法但您可以使用符合setProducer
方法的新方法替换此类生产者。