Я использую контейнер HK2 в приложении на Джерси. Мне нужно использовать свой собственный заводской метод для получения инъецированного экземпляра из контейнера HK2. Например,Использование изготовленной на заказ фабрики HK2 DI с Джерси
// Here I declare the IOC binding.
public class ApplicationBinder extends AbstractBinder {
@Override
protected void configure() {
bind(Logger.class).to(ILogger.class).in(Singleton.class);;
bind(MySqlRepository.class).to(IRepository.class).in(Singleton.class);
}
}
public class MyApplication extends ResourceConfig {
public static ApplicationBinder binder ;
public MyApplication() {
binder = new ApplicationBinder();
register(binder);
packages(true, "com.myapplication.server");
}
}
Вот мой код:
public class BusinessLogic
{
//@Inject
//ILogger logger ;
//Instead
ILogger logger = DependencyResolver .resolve(ILogger.class) // resolve will get ILogger from HK2 container
}
Причина мне нужно сделать, так это потому что иногда, я выделяю классы вручную, который имеет зависимость, так что в этом случае каждого использовании @Inject возвращает null. Например, если я использую новый BusinessLogic(), то регистратор с @Inject имеет значение null. Мне также необходимо связать бизнес-логику и использовать МОК, чтобы получить ILogge.
мне нужно что-то вроде этого:
public class DependencyResolver {
public static <T> T resolve(Class<T> beanClass){
return instance;
}
}
мне нужно использовать DependencyResolver для того, чтобы получить экземпляры я зарегистрированных в MyApplication.
Любые предложения. Спасибо заранее ...
Вы пытались создать org.glassfish.hk2.api.Factory для своих нужд? – zyexal
Я сделал, но мне нужно взять конфигурацию связывания, которую я создал в ResourceConfig с помощью ApplicationBinder. – Wasim
Просьба предоставить дополнительную информацию, а также код. Что именно вы пытались ввести ILogger в свой репозиторий? Как задействован репозиторий? – zyexal