Ответ 1
Создание ApplicationContext без XML (с помощью AnnotationConfigApplicationContext)
С AnnotationConfigApplicationContext вам совсем не нужен какой-либо XML. Вы создаете контекст приложения программно и
a) вручную зарегистрировать аннотированные классы
appContext.register( MyTypeA.class,
MyTypeB.class,
MyTypeC.class );
b) или сканировать путь к классам для аннотированных классов
appContext.scan(
"com.mycompany.myproject.mypackagea",
"com.mycompany.myproject.mypackageb"
)
Если вы используете один из конструкторов удобства
AnnotationConfigApplicationContext (Class <? > ... annotatedClasses)
или
AnnotationConfigApplicationContext (String... basePackages)
контекст создается и обновляется автоматически, иначе вам нужно вызвать метод refresh() после добавления классов или пакетов.
Автосообщение существующего не Spring beans (с использованием AutowireCapableBeanFactory)
Для autowiring существующего bean я думаю, что предпочтительной идиомой является использование
appContext.getAutowireCapableBeanFactory().autowireBean(existingBean)
Или, если вы хотите большего контроля, используйте
appContext.getAutowireCapableBeanFactory()
.autowireBeanProperties(
existingBean,
autowireMode,
// e.g. AutowireCapableBeanFactory.AUTOWIRE_BY_TYPE
dependencyCheck
)
Подробнее см.