Если вы действительно хотите использовать жёстко, если заявление для переключения между Prod и Дев событий, которые вы могли бы использовать CDI Отборочные просто впрыснуть две реализации в Фасад:
@Stateless
@LocalBean
public class ResultEvaluationFacade {
@Inject
@Development
private ResultEvalutationInterface dev;
@Inject
@Production
private ResultEvalutionInterface prod;
@Override
public void evaluateResults(Event e) {
switch (e.getType()) {
case Type.Production:
prod.evaluteResult(e);
break;
case Type.Development:
dev.evaluteResult(e);
break;
default:
throw new UnsupportedOperationException("Not supported yet.");
}
}
}
и определить свои две реализации:
@Development
public class ResultEvaluationDevelopment implements ResultEvaluationInterface {
...
}
@Production
public class ResultEvaluationDevelopment implements ResultEvaluationInterface {
...
}
Однако я бы предпочел использовать проект mock maven для размещения двух отдельных реализаций.
В качестве альтернативы вы можете использовать разные типы событий CDI, что-то вроде этого.
public void observeDevEvent(@Observe DevEvent event) {
//do stuff.
}
public void observeProdEvent(@Observe ProdEvent event) {
//do stuff
}
розжига события будет выглядеть примерно так:
@Inject
private Event<ProdEvent> prodEvent;
public void someMethod() {
ProdEvent pe = new ProdEvent()
// set some data on ProdEvent
prodEvent.fire(pe);
}
Примечание событие может также работать с отборочным, так что вы можете также добавить аннотацию Qualifier в событие вместо реализации два различных типов события ,
@Inject
@Production
private Event<MyEvent> event;
И слушать события @Prodcution;
public void handleProdEvent(@Observer @Production MyEvent myEvent) {
// do Stuff.
}
Для ленивого создания бобы вы можете использовать инъекцию инсулина CDI.
@Inject
private Instance<BeanA> beanA;
....
public void doStuff(Event e) {
...
case Type.Production:
//lazily evaluates and instantiatiates bean.
beanA.get().evaluateResult(e);
}
Для того, чтобы получить это прямо, вы хотите использовать реализацию макета для среды разработки? – dngfng
Использует ли «Производство» и «Разработка» ваш развернутый экземпляр, т. Е. У вас есть производственный экземпляр, который будет получать только события «Производство», или может ли один установленный экземпляр когда-либо получать события «Развертывание» и «Производство»? – user140547
Тип был просто примером. Я изменю их, чтобы не смутить вас. – perotom