Это, вероятно, проще, чем вы думаете. Весна не делает никакой магии. Синтаксический анализатор конфигурации XML просто создает определения компонентов и регистрирует их в фабрике компонентов. Вы можете сделать то же самое, создав DefaultListableBeanFactory и зарегистрировав в нем определения своего компонента. Основная ошибка здесь заключается в том, чтобы думать: «Ну и дела, я просто создаю бины и помещаю их в контекст приложения». Этот подход не работает, потому что Spring создает бины лениво, а API построен на идее фабрики, которая вызывается при необходимости, а не фабрики, которая выполняет всю работу при запуске.
Вот пример кода . Обратите внимание, что в этом примере требуется гораздо больше строк кода, но, определив свои собственные вспомогательные методы, вы сможете разбить его на что-то, что должно быть на одном уровне с XML.
Также проверьте источник для модульных тестов Spring для примеров.