关闭

用BeanNameAutoProxyCreator自动创建事务代理

标签: bean
164人阅读 评论(0) 收藏 举报
分类:

用BeanNameAutoProxyCreator自动创建事务代理
下面介绍一种优秀的事务代理配置策略:采用这种配置策略,完全可以避免增量式配置,所有的事务代理由系统自动创建。容器中的目标bean自动消失,避免需要使用嵌套bean来保证目标bean不可被访问。
这种配置方式依赖于Spring提供的bean后处理器,该后处理器用于为每个bean自动创建代理,此处的代理不仅可以是事务代理,也可以是任意的代理,只需要有合适的拦截器即可。

下面是采用BeanNameAutoProxyCreator配置事务代理的配置文件:
[xhtml] view plaincopy

<?xml version="1.0" encoding="gb2312"?>  
<!--  Spring配置文件的文件头,包含DTD等信息-->  
<!DOCTYPE beans PUBLIC "-//SPRING//DTD BEAN//EN"  
    "[url]http://www.springframework.org/dtd/spring-beans.dtd[/url]">  
<beans>  
    <!--定义数据源-->  
    <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">  
        <!--  定义数据库驱动-->  
            <property name="driverClassName"><value>com.mysql.jdbc.Driver</value></property>  
        <!--  定义数据库url-->  
            <property name="url"><value>jdbc:mysql://localhost:3306/spring</value></property>  
<!--  定义数据库用户名-->  
            <property name="username"><value>root</value></property>  
        <!--  定义数据库密码-->  
            <property name="password"><value>32147</value></property>  
    </bean>  
    <!--定义一个hibernate的SessionFactory-->  
<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">  
        <!--  定义SessionFactory必须注入DataSource-->  
            <property name="dataSource"><ref local="dataSource"/></property>  
            <property name="mappingResources">  
            <list>  
                <!--以下用来列出所有的PO映射文件-->  
                <value>Person.hbm.xml</value>  
            </list>  
            </property>  
            <property name="hibernateProperties">  
            <props>  
<!--此处用来定义hibernate的SessionFactory的属性:  
不同数据库连接,启动时选择create,update,create-drop-->  
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>  
            <prop key="hibernate.hbm2ddl.auto">update</prop>  
        </props>  
        </property>  
    </bean>  
    <!--  定义事务管理器,使用适用于Hibernte的事务管理器-->  
<bean id="transactionManager"  
        class="org.springframework.orm.hibernate3.HibernateTransactionManager">  
            <!--  HibernateTransactionManager  bean需要依赖注入一个SessionFactory bean的引用-->  
            <property name="sessionFactory"><ref local="sessionFactory"/></property>  
</bean>   
    <!--  配置事务拦截器-->  
<bean id="transactionInterceptor"  
class="org.springframework.transaction.interceptor.TransactionInterceptor">  
        <!--  事务拦截器bean需要依赖注入一个事务管理器 -->  
        <property name="transactionManager" ref="transactionManager"/>  
        <property name="transactionAttributes">  
            <!--  下面定义事务传播属性-->  
            <props>  
                <prop key="insert*">PROPAGATION_REQUIRED</prop>  
                <prop key="find*">PROPAGATION_REQUIRED,readOnly</prop>  
                <prop key="*">PROPAGATION_REQUIRED</prop>  
            </props>  
        </property>  
    </bean>  

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23573次
    • 积分:372
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:61篇
    • 译文:0篇
    • 评论:1条
    最新评论