Предоставлять управляемые объекты Spring не управляемым объектам Spring? - PullRequest
0 голосов
/ 18 января 2010

У меня есть структура данных, представляющая файл CSV, содержащий тысячи настроек конфигурации. Структура представляет собой файл класса Java с переменными экземпляра для представления записей в файле (например, a HashMap) и состояния файла (ошибки, предупреждения и т. Д.).

Эти классы не создаются Spring, поскольку они имеют состояние. Я хотел бы, чтобы класс получил доступ к свойствам конфигурации системы, которые в настоящее время обрабатываются классом DAO управляемой базы данных Spring. Обычно, когда классы нуждаются в этом DAO, я внедряю его через Spring, используя @Autowired. Но так как моя структура данных не управляется Spring, как класс структуры CSV может получить доступ к DAO?

Единственный способ, о котором я могу подумать, - это создать структуру данных из управляемого бина Spring, чтобы просто передать в DAO:

CSVDataStruture c = new CSVDataStruture(dao);

Ответы [ 2 ]

3 голосов
/ 18 января 2010

См. 6.8.1. Использование AspectJ для добавления зависимостей в доменные объекты с помощью Spring об использовании @Configurable

Другой способ - получить контекст приложения (в веб-приложениях это WebApplicationContextUtils.getRequiredWebApplicationContext(servletContext)) и получить компоненты с помощью context.getBean("name"), но это скорее обходной путь.

1 голос
/ 18 января 2010

Эти классы не создаются Spring, поскольку они имеют состояние.

Что заставляет вас думать, что Spring не может / не должен создавать объекты, которые имеют состояние?

В зависимости от того, что вы пытаетесь сделать (это трудно понять!), Я бы сделал одно из следующих действий:

  • Дайте методы получения и установки класса CSV для параметра файла CVS и параметра DAO и создайте его экземпляр с помощью Spring DI. Предполагается, что имя файла доступно при подключении Spring.

  • Создать фабричный класс с методом, который создает экземпляр объекта CSV из параметра файла. Класс фабрики должен иметь метод получения / установки для объекта DAO и создаваться с использованием Spring DI.

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