2014-02-03 4 views

ответ

12

Найденный - вы можете просто указать весь класс производителей в качестве альтернативы.

@Alternative 
public class AltProducer { ... } 

beans.xml:

<beans> 
    <alternatives> 
    <class>com.package.AltProducer</class> 
    </alternatives> 
</beans> 
+2

+1. Мне это очень громоздко. Javadocs для '@ Alternative' говорит:« Может применяться к классу bean, методу производителя или полем ». Но это вводит в заблуждение, потому что внутри beans.xml мы можем указывать только '' или '' - нет способа ввести метод или поле производителя. –

+0

Вы совершенно правы. Наличие @Alternative аннотации в методе продюсера абсолютно бессмысленно, поскольку в Beans.xml не может быть активирована созданная альтернатива. – 99Sono

+0

Еще один момент с CDI 1.1 заключается в том, что в большинстве случаев, когда вы аннотируете родительский класс как альтернативу, вы также захотите добавить аннотацию Priority, чтобы включить эту альтернативу во всех BeanDeploymenyArchieves of WELD. Так что помните, редко вы используете альтернативу без приоритета в jEE 7. – 99Sono

Смежные вопросы