Код: Выделить всё
@Controller
public class Test{
@RequestMapping(value = "/load", method = RequestMethod.GET)
public @ResponseBody String testConfiguration() {
// this is pojo and here it works, channels within have wired interface implementation
StaticFactory.getChannels(null);
// if i call same method within spring managed bean (@Service)
// then it doesnt work
System.out.println("channels created");
return "alive";
}
}
Код: Выделить всё
public DummyChannel() {
// enables dependency injection of spring managed beans into POJO
SpringBeanAutowiringSupport.processInjectionBasedOnCurrentContext(this);
}
public class StaticFactory {
public static List getChannels(Map channelsDefinition) {
List dummyChannels = new ArrayList();
DummyChannel d = new DummyChannel();
System.out.println("here");
dummyChannels.add(new DummyChannel());
return dummyChannels;
}
}
Однако, если я скопирую и вставлю точно такой же код из фабрики в управляемый Spring Bean, аннотированный @Service, проводная зависимость в созданном канале будет равна нулю.
Может ли кто-нибудь сказать мне, чего мне здесь не хватает, почему все вводится, когда фабрика каналов не управляется Spring?
Редактировать решение: // Хорошо, поэтому проблема в том, что DummyChannels включает поддержку автоматического подключения в конструкторе, в то время как bean-компоненты Spring все еще не загружены. Это работает, если я делаю это внутри метода, который должен обращаться к службе автоматического подключения, а не к конструктору DummyChannel.
Подробнее здесь: https://stackoverflow.com/questions/286 ... ontextthis
Мобильная версия