понимать метаданные аннотации xml весны? - PullRequest
2 голосов
/ 25 декабря 2009
<context:annotation-config/>
 <context:component-scan...

это используется для класса, который нужно аннотировать с помощью @Repository @Service @Component ...

    <context:spring-configured />
<context:component-scan... 

используйте, если мне нужно использовать @Configurable

    <tx:annotation-driven transaction-manager="transactionManager" />
<context:component-scan...

использовать, если мне нужен @Transactional, кроме того, какие еще метаданные мне нужно добавить в XML для использования управления транзакциями?

<bean
        class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

зачем нужно добавлять это в xml? с какой целью?

Ответы [ 2 ]

4 голосов
/ 25 декабря 2009
<tx:annotation-driven transaction-manager="transactionManager" /> 

Чтобы использовать управление транзакциями, вы также должны объявить транзакцииManager для использования. Это объявление зависит от подхода, который вы используете для доступа к данным. Например, для простого JDBC вы пишете:

<bean id = "transactionManager" class = "org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name = "dataSource" ref = "dataSource" />
</bean>

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />

Это объявление используется для обработки аннотаций @ PersistenceContext и @ PersistenceUnit для конфигурации доступа к данным JPA. Однако, поддержка этих аннотаций также включена в <context:annotation-config />, поэтому вам не нужно объявлять это явно, если вы используете <context:annotation-config />.

2 голосов
/ 25 декабря 2009

С Весенний Javadoc

BeanPostProcessor, который обрабатывает аннотации PersistenceUnit и PersistenceContext для внедрения соответствующих ресурсов JPA EntityManagerFactory и EntityManager. Любые такие аннотированные поля или методы в любом объекте, управляемом Spring, будут автоматически добавлены.
Этот постпроцессор будет вводить подчиненные интерфейсы EntityManagerFactory и EntityManager, если аннотированные поля или методы объявлены как таковые. Фактический тип будет проверен заранее, за исключением общей («транзакционной») ссылки EntityManager, где несоответствия типов могут быть обнаружены уже при первом фактическом вызове.
...