spring基于注解形式配置事物

	<!--事务管理器 -->  
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">  
            <property name="dataSource" ref="dataSource" />  
    </bean>  
    <!-- 使用全注释事务 -->  
    <tx:annotation-driven transaction-manager="transactionManager" />

或者

	<!-- 启用注释管理事务注释风格. -->
	<tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true" />
	<!--声明一个事务管理器. -->
	<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"
		p:dataSource-ref="dataSource" />

数据源

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"  
        destroy-method="close">  
        <property name="driverClassName" value="${jdbc_driver}" />  
        <property name="url" value="${jdbc_url}" />  
        <property name="username" value="${jdbc_username}" />  
        <property name="password" value="${jdbc_password}" />  
        <!-- 初始化连接大小 -->  
        <property name="initialSize" value="${jdbc_initialSize}"></property>  
        <!-- 连接池最大数量 -->  
        <property name="maxActive" value="${jdbc_maxActive}"></property>  
        <!-- 连接池最大空闲 -->  
        <property name="maxIdle" value="${jdbc_maxIdle}"></property>  
        <!-- 连接池最小空闲 -->  
        <property name="minIdle" value="${jdbc_minIdle}"></property>  
        <!-- 获取连接最大等待时间 -->  
        <property name="maxWait" value="${jdbc_maxWait}"></property>  
    </bean> 

注意:proxy-target-class属性值决定是基于接口的还是基于类的代理被创建。如果proxy-target-class 属性值被设置为true,那么基于类的代理将起作用(这时需要cglib库)。如果proxy-target-class属值被设置为false或者这个属性被省略,那么标准的JDK 基于接口的代理将起作用。

即使你未声明 proxy-target-class="true" ,但运行类没有继承接口,spring也会自动使用CGLIB代理。

高版本spring自动根据运行类选择 JDK 或 CGLIB 代理



猜你喜欢

转载自blog.csdn.net/no_can_no_bb_/article/details/78645313