2016-05-20 7 views
1

Предположим, у меня есть классы, которые были созданы не весной. Например, они могут быть созданы десериализатором или JavaFX.Можно ли вводить свойства сторонним компонентам?

Могу ли я кодировать эти классы таким же образом, как я код Spring beans и вводить в них свойства позже?

На самом деле, мне нужна процедура, которая будет сканировать класс с отражением, найти в нем все аннотации @Autowired и ввести значения из контекста приложения?

Это произойдет, если я позвоню applicationContext.getBeanFactory().registerSingleton("myName", myBean)? Заметьте, что я не ограничивал бы себя одиночками.

+0

Я не думаю, что это возможно. Поскольку Spring-контейнер создавал прокси-объект, который затем является оберткой оригинала и регистрируется фабрикой компонентов. Поэтому я сомневаюсь, что мы попытаемся выполнить задачу контейнера, будет ли она работать с фактическим экземпляром. – Beniton

ответ

0

Если бобы не создаются Spring, тогда вы не можете попросить Spring привнести зависимости или сообщить им.

Это распространенная ошибка, которую я вижу в создании неофитов весны. Они требуют нового для создания экземпляра компонента с аннотациями и не могут понять, почему их зависимости не вводятся.

Весна будет обрабатывать все бобы, которые вы создаете с фабрикой фасоли. Вы сами по себе со всеми другими, созданными с использованием новых.

+0

Хорошо, но это не я, кто является «Весенним» неофитом, это разработчики «JavaFX», которые являются неопознанными Spring :) – Dims

+0

Что бы ни случилось. Весна не несет ответственности за бобы, созданные за пределами завода. Вам нужно написать свой собственный код, чтобы сделать это. JavaFX? Я думал, что он мертв. Множество других технологий пользовательского интерфейса на выбор. Я бы выбрал один, который поддерживал Spring. – duffymo

+0

Почему я не могу повторно использовать код, который уже присутствует внутри Spring? – Dims

Смежные вопросы