【问题标题】:understand spring xml annotation metadata?了解 Spring xml 注释元数据?
【发布时间】:2010-12-29 23:53:08
【问题描述】:
<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 中添加这个需要什么?目的是什么?

【问题讨论】:

    标签: java spring transactions annotations


    【解决方案1】:
    <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" />
    

    此声明用于处理 JPA 数据访问配置的 @PersistenceContext@PersistenceUnit 注释。但是,&lt;context:annotation-config /&gt; 中也包含了对这个注解的支持,所以如果你使用&lt;context:annotation-config /&gt;,你不需要显式声明它。

    【讨论】:

      【解决方案2】:

      来自spring javadoc

      处理 PersistenceUnit 和 PersistenceContext 注解的 BeanPostProcessor,用于注入对应的 JPA 资源 EntityManagerFactory 和 EntityManager。任何 Spring 管理的对象中的任何此类注释字段或方法都将自动注入。
      如果注释的字段或方法被声明为这样,则此后处理器将注入 EntityManagerFactory 和 EntityManager 的子接口。实际类型将尽早验证,但共享(“事务性”)EntityManager 引用除外,其中类型不匹配可能在第一次实际调用时才被检测到。

      【讨论】:

        猜你喜欢
        • 2012-02-08
        • 2014-05-09
        • 1970-01-01
        • 1970-01-01
        • 2014-09-25
        • 2013-08-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-23
        相关资源
        最近更新 更多