JBoss Weld: внедрить другую реализацию для тестирования - PullRequest
1 голос
/ 09 февраля 2012

Я хотел бы добавить другую реализацию в bean-компонент, в зависимости от контекста. Вот ситуация:

interface A{}

class AImplForTest implements A{}

class AImplForProd implements A{}

class B{
    @Inject A a;
}

В тестовом контексте я бы хотел, чтобы AImplForTest вводился, тогда как в рабочем контексте это должен быть AImplForProd. B - это один и тот же класс в двух контекстах. Возможно ли это?

1 Ответ

1 голос
/ 09 февраля 2012

Никогда не использовался на практике, но из теории вы можете использовать аннотацию @Alternative.

Из справочной документации по сварке :

Альтернативами являются бины, реализация которых специфична для конкретный клиентский модуль или сценарий развертывания. ... По умолчанию, @ Альтернативные бины отключены. Нам нужно включить альтернативу в Beans.xml дескриптор архива бина, чтобы сделать его доступным для инстанцирование и инъекция. Эта активация относится только к бобам в этом архиве.

...