У меня есть DAO, который я пытаюсь внедрить в несколько разных мест:
@Repository
public class FooDAO
{
@Autowired
private HibernateManager sessionFactory;
@PostConstruct
public void doSomeDatabaseStuff() throws DataAccessException
{
...
}
}
И мой application-context.xml - довольно простой контекст: component-scan:
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-2.5.xsd" default-init-method="init" default-destroy-method="destroy">
<context:component-scan base-package="top.level"/>
</beans>
Доступ к DAO осуществляется через пару сервлетов на моем сервере приложений через свойства @Autowired.Насколько я понимаю, все, что помечено @Repository, должно по умолчанию быть одноэлементным, и поэтому doSomeDatabaseStuff () следует вызывать только один раз (как я и собирался).Проблема в том, что я вижу, что doSomeDatabaseStuff () вызывается несколько раз.
Что здесь происходит?Я что-то настроил неправильно?Я использую Spring 3.0.0.
Спасибо за помощь.
ОБНОВЛЕНИЕ: У меня есть несколько сервлетов, у которых все есть тот же самый файл конфигурации xml, показанный выше.Будет ли создан новый экземпляр FooDAO для каждого сервлета?Если так, как я могу предотвратить это?