完整的spring代理设置

来源:互联网 发布:matlab矩阵添加元素 编辑:程序博客网 时间:2024/05/23 18:26
 

 方法一 利用TransactionProxyFactoryBean 代理(hibernate dao)

1 数据库设置

<bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="oracle.jdbc.driver.OracleDriver">
  </property>
  <property name="url"
   value="jdbc:oracle:thin:@XX.XX.XX.XX:XXXX:datebaseName">
  </property>
  <property name="username" value="XX"></property>
  <property name="password" value="XX"></property>
</bean>

2 sessionFactory

<bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource" ref="dataSource" />
   <property name="configLocations">
   <list>
    <value>classpath*:/config/hibernate.cfg.xml</value>
   </list>
  </property>
  <property name="hibernateProperties">
   <props>
    <prop key="hibernate.dialect">
     org.hibernate.dialect.Oracle9Dialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.cache.use_query_cache">false</prop>
    <prop key="hibernate.cache.use_second_level_cache">
     false
    </prop>
    <prop key="hibernate.cache.provider_class">
     org.hibernate.cache.EhCacheProvider
    </prop>
   </props>
  </property>
 </bean>

3 transactionManager

<bean id="transactionManager"
  class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory" />
 </bean>

4 代理

<bean id="txProxyTemplate" abstract="true"
  class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
  <property name="transactionManager" ref="transactionManager" />
  <property name="transactionAttributes">
   <props>
    <prop key="save*">PROPAGATION_REQUIRED</prop>
    <prop key="update*">PROPAGATION_REQUIRED</prop>
    <prop key="delete*">PROPAGATION_REQUIRED</prop>
    <prop key="execute*">PROPAGATION_REQUIRED</prop>
    <prop key="findBy*">PROPAGATION_REQUIRED</prop>
    <prop key="*">PROPAGATION_REQUIRED</prop>
   </props>
  </property>
 </bean>

5 被代理对象

<bean id="devattrManager" parent="txProxyTemplate">
  <property name="target">
   <bean class="com.service.DevattrManager">
    <property name="devttrDao" ref="devttrDao" />
      </bean>
  </property>
 </bean>

6 DAO文件配置

<bean id="SurveyDAO"
  class="com.hibernate.dao.SurveyDAO">
  <property name="sessionFactory">
   <ref bean="sessionFactory" />
  </property>
 </bean>

方法二 使用BeanNameAutoProxyCreator代理(hibernate dao)

1 dateSource

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource" destroy-method="close">
  <property name="driverClass" value="com.microsoft.jdbc.sqlserver.SQLServerDriver"></property>
  <property name="jdbcUrl" value="jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=chinamap;SelectMethod=Cursor"></property>
  <property name="user" value="sa"></property>
  <property name="password" value="sa"></property>
  <!-- 数据库连接池 -->
     <property name="initialPoolSize"><value>20</value></property>
       <property name="minPoolSize"><value>30</value></property>
       <property name="maxPoolSize"><value>100</value></property>
       <property name="acquireIncrement"><value>5</value></property>
       <property name="maxIdleTime"><value>10</value></property>
       <property name="maxStatements"><value>0</value></property>    
 </bean>

2 sessionFactory
 <bean id="sessionFactory"
  class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
  <property name="dataSource">
   <ref bean="dataSource"/>
  </property>
  <property name="configLocation"
   value="classpath:hibernate.cfg.xml">
  </property>
  <property name="hibernateProperties">
            <props>
             <prop key="hibernate.dialect">org.hibernate.dialect.SQLServerDialect</prop>              
                <prop key="show_sql">true</prop>
                <prop key="hibernate.hbm2ddl.auto">update</prop>
                <prop key="hibernate.jdbc.batch_size">20</prop>
            </props>
        </property>
 </bean>

3 transactionManager
 <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
  <property name="sessionFactory" ref="sessionFactory"/>
 </bean>

4 transactionInterceptor
 <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>

5 代理

 <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
 <!-- 指定对满足哪些Bean name的Bean自动生成业务代理 -->
     <property name="beanNames">
            <!-- 下面是所有需要自动创建事务代理的Bean-->
            <list>
                 <value>svgWorkFlowManager</value>
    <!-- 此处可增加其他需要自动创建事务代理的Bean-->
            </list>
                </property>
        <!-- 下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
        <property name="interceptorNames">
            <list>
                <value>transactionInterceptor</value>
            </list>
        </property>
    </bean>

6 DAO文件配置

<bean id="SurveyDAO"
  class="com.hibernate.dao.SurveyDAO">
  <property name="sessionFactory">
   <ref bean="sessionFactory" />
  </property>
 </bean>

 

方法三 Spring dao

 

1 dateSource

<bean id="dataSource"
  class="org.apache.commons.dbcp.BasicDataSource">
  <property name="driverClassName"
   value="oracle.jdbc.driver.OracleDriver">
  </property>
  <property name="url"
   value="jdbc:oracle:thin:@XX.XX.XX.XX:XXXX:datebaseName">
  </property>
  <property name="username" value="XX"></property>
  <property name="password" value="XX"></property>
</bean>

 

2 jdbcTemplate

 <bean id="jdbcTemplate" class="org.springframework.jdbc.core.JdbcTemplate">
  <property name="dataSource">
   <ref bean="dataSource" />
  </property>
 </bean>

3 dao配置

<bean id="dddPKDao" class="com.springjdbc.dao.dddDao">
  <property name="jdbcTemplate">
   <ref bean="jdbcTemplate" />
 </bean>
  </property>

此bean 也可被有代理的manager 配置中引用,例如 配置到以上方法一中的manager中