Если вы хотите, чтобы Spring управлял вашим объектом (это означает, что зависимости вводятся, среди прочего), вы должны использовать ApplicationContext.
Вызов Test test = new Test()
не является незаконным или даже плохой практикой.Это просто означает, что Spring не будет осведомлен об этом объекте, и он не будет беспокоить автоматическое связывание его зависимостей или выполнение чего-либо еще, чего вы ожидаете от Spring.
Вам не обязательно использоватьфайл applicationContext.xml для ВСЕХ объявлений вашего компонента.Многие люди предпочитают аннотации, которые позволяют объявлять bean-компоненты вне файла applicationContext.xml.
Ничего не стоит, что bean-компоненты, управляемые Spring, по умолчанию являются одиночными (например, сервлетами).Если вы хотите, чтобы бины с состоянием были осведомлены о Spring, вы можете использовать ObjectFactoryCreatingFactoryBean, чтобы сделать что-то вроде этого:
@Autowired
private ObjectFactory myWidgetFactory;
public void doStuff() {
Widget w = myWidgetFactory.getObject();
}
Подробнее об этом поведении можно прочитать здесь:
http://static.springsource.org/spring/docs/3.0.x/api/org/springframework/beans/factory/config/ObjectFactoryCreatingFactoryBean.html