У меня есть интерфейс и реализация его так;Wildfly 8 и сварка инъекции CDI через метод провайдера не влечет задержка
interface MyInterface {
public void doSomething();
}
@Alternative
class MyImpl implements MyInterface {
@Inject DB db;
public void doSomething() {
// db.select ....
}
}
Так как я хочу, чтобы иметь возможность изменить свой Databse через конфигурационный файл я использую метод провайдера для генерации об осуществлении
@Singleton
public class MyApiProvider {
@Produces
public MyInterface getMyApi() {
return new MyImpl();
}
}
Дело в том, что, когда класс MyImpl производится с помощью метода getMyApi «@Inject DB db;» в классе MyImpl имеет значение null.
Так что я хочу просто настроить, какую реализацию использовать во время выполнения.
EDIT: Когда я удалить @Alternative и удалить класс поставщика/метод все работает, как и ожидалось ..
EDIT 2: Я хотел бы сказать, мой веб-приложение из конфигурационного файла, класс реализации MyInterface, который я хочу использовать сегодня. Завтра, может быть, мне нужна другая реализация, и я не хочу перекомпилировать весь проект.
Хм .. я вижу. Я хотел бы иметь файл свойств, где я мог бы сказать, что для MyInterface используйте MyImpl.class или в другой солнечный день используйте MyImpl2.class. – KIC
Отборочный код, насколько я понял, также закодирован в коде. Если я хочу, чтобы swich мой класс реализации, я должен перекомпилировать весь проект правильно? – KIC