Как сгенерировать прокси-класс из интерфейса, используя чистые аннотации в Spring 3?

#java #spring #annotations #aop

#java #весна #аннотации #aop

Вопрос:

в настоящее время я создаю прокси-классы из интерфейсов с помощью XML-конфигурации spring 3 следующим образом:

 <bean id="abstractDaoTarget" class="mypackage.GenericDaoImpl" abstract="true" />

<bean id="abstractDao" class="org.springframework.aop.framework.ProxyFactoryBean" abstract="true" />

<bean id="personDao" parent="abstractDao">
    <property name="proxyInterfaces">
        <value>mypackage.CustomerDao</value>
    </property>
    <property name="target">
        <bean parent="abstractDaoTarget">
        </bean>
    </property>
</bean>
 

Обратите внимание, что у меня есть только один интерфейс с именем PersonDao и НЕТ реализации этого интерфейса. Приведенный выше фрагмент xml работает нормально, я могу создать «экземпляр» интерфейса.

Мой вопрос в том, как я могу добиться этого с помощью чистых аннотаций Spring 3 без приведенного выше фрагмента xml? Возможно ли это без xml?

Ответ №1:

Взгляните на Spring Data JPA. Вот вводный урок. Они делают почти то же, что и вы.

Комментарии:

1. Спасибо за ссылку на Spring Data JPA. Я не знал, что они создают какой-то общий API DAO. Я думаю, что попробую это в своем следующем проекте.

Ответ №2:

Вы ищете способ генерировать компоненты с фабрикой, полностью написанной на Java, без xml? — Затем используйте @Configuration для аннотирования класса и @Bean для аннотирования метода, который создает компонент. 3.11.1 Основные понятия: @Configuration и @Bean

Если это не то, что вы имеете в виду, тогда взгляните на код Hades. Это проект, который делает то же самое, что и (я думаю) вы. Создание DAO из интерфейсов.

Комментарии:

1. Hades является корнем того, что сейчас является Spring Data JPA

2. Шон Патрик Флойд прав, поэтому, если вы хотите его использовать, используйте Spring Data JPA instread of hades. Но если вы хотите только посмотреть, кто это сделал, тогда используйте Hades, потому что я предполагаю, что Spring Data JPA содержит гораздо больше кода, чем Hades, поэтому вы быстрее найдете нужный вам фрагмент кода, когда посмотрите на hades (и я знаю, что код читаем).

3. Гадес был довольно хорошим советом. Я действительно хотел знать, как это работает под капотом. Гадес мне в значительной степени помог с этим.