2009-12-25 69 views
2
<context:annotation-config/> 
<context:component-scan... 

這是用於類,我需要用@Repository @Service @Component註解......瞭解spring xml註釋元數據?

的使用,如果我需要,如果使用@Configurable

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

利用我需要@Transactional,除此之外,爲了使用事務管理,我需要在xml中添加哪些其他元數據?

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

什麼是需要在XML中添加此?出於什麼目的?

回答

4
<tx:annotation-driven transaction-manager="transactionManager" /> 

爲了使用事務管理還需要聲明一個transactionManager的使用。該聲明取決於您用來訪問數據的方法。例如,對於普通的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數據訪問配置。 Hovewer支持此註釋也包含在<context:annotation-config />中,所以如果您使用<context:annotation-config />,則無需明確聲明。

2

spring javadoc

BeanPostProcessor的,其處理PersistenceUnit和PersistenceContext註釋,用於相應的JPA資源的EntityManagerFactory和EntityManager的注射。任何Spring管理的對象中的任何此類註釋字段或方法都會自動注入。
如果註釋的字段或方法是這樣聲明的,這個後處理器將注入EntityManagerFactory和EntityManager的子接口。除了共享(「事務性」)EntityManager引用外,實際類型將被提前驗證,其中類型不匹配可能會在第一次實際調用時被檢測到。