Пружинное автоматическое подключение с помощью процессаInjectionBasedOnCurrentContext(this);JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Пружинное автоматическое подключение с помощью процессаInjectionBasedOnCurrentContext(this);

Сообщение Anonymous »

У меня следующая ситуация. Существует POJO, который имеет автоматическую реализацию интерфейса, используя некоторую магию Spring, как показано ниже. Однако эта зависимость не устраняется, если создание каналов управляется через Spring Bean. Это работает только в том случае, если фабрика POJO создает каналы. Пример ниже.

Код: Выделить всё

@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";

}

}
Созданные каналы представляют собой POJO, но они имеют реализацию интерфейса с автоматическим подключением, которую следует включить с помощью следующего в конструкторе:

Код: Выделить всё

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;
}

}
Теперь это работает, если у меня есть Factory, не управляемая пружиной. Независимо от того, является ли упомянутая фабрика статической или нет при создании каналов, они имеют правильно реализованный интерфейс.
Однако, если я скопирую и вставлю точно такой же код из фабрики в управляемый Spring Bean, аннотированный @Service, проводная зависимость в созданном канале будет равна нулю.
Может ли кто-нибудь сказать мне, чего мне здесь не хватает, почему все вводится, когда фабрика каналов не управляется Spring?

Редактировать решение: // Хорошо, поэтому проблема в том, что DummyChannels включает поддержку автоматического подключения в конструкторе, в то время как bean-компоненты Spring все еще не загружены. Это работает, если я делаю это внутри метода, который должен обращаться к службе автоматического подключения, а не к конструктору DummyChannel.

Подробнее здесь: https://stackoverflow.com/questions/286 ... ontextthis
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»