Как я могу получить доступ к базе данных из XML контекста приложения Spring? - PullRequest
0 голосов
/ 18 июня 2011

У меня есть несколько bean-компонентов, которые должны использовать другой bean-компонент, который должен быть загружен из базы данных.Я использую Hibernate и имею DAO с аннотацией @ Repository.

Мне удалось сделать это, определив bean-компонент как singleton, и использовать DAO как фабрику в XML, но поскольку репозитории не являются явными в XML, он чувствуетгрязный для меня.

Есть ли более элегантное более простое для понимания решение?

Вот выдержка из application-context-beans.xml:

<bean id="myBean"
        class="myBeanClass">
    <property name="defaultMyValue">
        <bean factory-bean="myValueDAO" factory-method="getEntity">
            <constructor-arg value="0" />
        </bean>
    </property>
</bean>

myValueDAO не определен в XML, но класс с аннотацией @ Repository

Этот код работает, но он мне не нравится, а функция Spring IDE Eclipse тоже не нравится ;-)

Ответы [ 2 ]

1 голос
/ 19 июня 2011

Это своего рода эстетическое суждение о том, сколько вы хотите сделать в Java и сколько в XML, с учетом таких факторов, как то, кто собирается поддерживать это в будущем и какие изменения они могут внести.

Что касается меня, я не люблю помещать простые старые доменные объекты непосредственно в конфигурацию контекста, если только это не что-то вроде util:properties, которое содержит данные, которые другие мои компоненты должны инициализировать сами. Если вы используете решение, которое вам кажется слишком похожим на глубокую чёрную магию, напишите свой собственный FactoryBean, который принимает экземпляр DAO (который может быть даже автоматически подключен, если хотите) и возвращает экземпляр myBeanClass.

0 голосов
/ 19 июня 2011

Это может иметь смысл, только если ваш бин является неизменным объектом Hibernate, который не содержит зависимых постоянных бинов / коллекций.В противном случае вы можете столкнуться с проблемами с различными сеансами и исключениями отложенной загрузки.Не могли бы вы подробно объяснить, почему вы используете такой сомнительный с точки зрения архитектуры подход?

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