Класс DAO объявлен в ApplicationContext (Spring) - PullRequest
0 голосов
/ 11 октября 2011

Я искал какой-то существующий код компании, с которой я работаю, и я вижу, что файл applicationContext.xml имеет класс UserDAO, объявленный как bean-компонент, что хорошо, но в самом классе DAO объявлен getFromApplicationContext (ApplicationContext ctx)который возвращает экземпляр самого класса DAO.Я не могу понять, где этот метод вызывается, кто его вызывает.Класс DAO расширяет класс HibernateDaoSupport. Как узнать, что мне нужно создать этот метод в своем классе, потому что, если я его удалю, компилятор в eclipse не будет жаловаться.Я пытаюсь сказать, что должен быть интерфейс или абстрактный класс, который заставит меня написать этот метод.

public static UserDAO getFromApplicationContext(ApplicationContext ctx) {
    return (UserDAO) ctx.getBean("userDAO");
}

Пожалуйста, кто-нибудь, кто может объяснить немного.

Ответы [ 2 ]

1 голос
/ 11 октября 2011

Если этот метод нигде не используется, я думаю, вы можете безопасно удалить его. Это не похоже на какой-то метод, автоматически вызываемый Spring. Вместо этого он выглядит как служебный метод для получения экземпляра UserDAO из контекста приложения.

Этот метод полезен, потому что он избегает жесткого кодирования имени компонента везде, но его, как правило, следует избегать, потому что весь смысл Spring состоит в том, чтобы использовать внедрение зависимостей и, таким образом, избегать поисков компонента, подобных этому. Контекст приложения может быть использован для получения корневого объекта один раз при запуске. Но все остальные бобы должны быть введены.

1 голос
/ 11 октября 2011

Обычно у вас не должно быть ссылки на контекст приложения, особенно в чем-то таком тривиальном, как пользовательский дао.

Несколько советов по поиску использования:

  • используйте затмение "Иерархия вызовов" (CTRL + ALT + H), чтобы увидеть, где находится метод, называемый
  • Используйте правую кнопку мыши -> Ссылки -> Проект, чтобы увидеть, где используется класс

Если он не используется, и нет проблем с компиляцией, а в конфигурации xml нет ничего особенного (например, factory-method) - удалите его.

...