Функция Spring @PostConstruct в @Repository вызывается несколько раз - PullRequest
1 голос
/ 10 апреля 2010

У меня есть 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 для каждого сервлета?Если так, как я могу предотвратить это?

1 Ответ

1 голос
/ 10 апреля 2010

У меня есть несколько сервлетов с одинаковым конфигурационным файлом xml, показанным выше

это означает, что вы имеете в виду несколько пружинных контекстов, а это, в свою очередь, означает, что создается несколько экземпляров (для каждого контекста).

Вам нужно только один контекст весны - то есть только одна конфигурация xml (applicationContext.xml)

Прочтите этого руководства , чтобы узнать, как настроить Spring MVC.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...