分享

Terasoluna学习手记之配置文件applicationContext.xml

 昵称9376223 2012-04-05

一般而言,Terasoluna特指Terasoluna For Java版。该框架集合了SpringStruts 1.0以及Ibatis三个框架,并进行了一定程度的扩展(如对输入文字提交时进行的验证)。该框架进一步进行了封装,使得开发人员更加注重于业务逻辑的编写(Terasoluna中成为Blogic)。

 

applicationContext.xml,全局配置文件。其中包含了

1.Controller的注入,用来进行表单提交时的拦截,如权限不够URL是非法的情形,则会进行错误的处理。其中需要注入的bean是由开发者自己实现的接口jp.terasoluna.fw.web.thin.AuthenticationController

2.DataSource相关Bean的注入。若使用WTP模式进行DataSource的指定,则需要在META-INF/context.xml中进行配置;若使用Tomcat或WebLogic下JDBC的连接方式,则需按一下方式进行配置。

<bean id="TerasolunaSampleDataSource"
        class="org.springframework.jndi.JndiObjectFactoryBean">
     <property name="jndiName">
       <!-- Tomcat  -->
       <!--<value>java:comp/env/jdbc/TerasolunaSampleDataSource</value>-->
       <!-- Weblogic  -->
       <!--<value>jdbc/TerasolunaSampleDataSource</value>-->
     </property>
    </bean>

3.事务管理器的注入。具体参照一下,需要关联DataSource。

// 事务管理器的创建

<bean id="transactionManager"
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource">
            <ref bean="TerasolunaSampleDataSource"/>
        </property>
    </bean>

 

// 对需要进行事务管理的处理进行设置

<bean id="attrSource"
      class="org.springframework.transaction.interceptor.NameMatchTransactionAttributeSource">
    <property name="properties">
      <props>
        <prop key="execute*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
        <prop key="insert*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
        <prop key="update*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
        <prop key="delete*">PROPAGATION_REQUIRED,-java.lang.Exception</prop>
        <prop key="select*">PROPAGATION_REQUIRED,readOnly,-java.lang.Exception</prop>
      </props>
    </property>
  </bean>

事务处理的类是由Spring提供的。

4.事务管理器拦截设定。

<bean id="transactionInterceptor"
      class="org.springframework.transaction.interceptor.TransactionInterceptor">
    <property name="transactionManager">
      <ref bean="transactionManager"/>
    </property>
    <property name="transactionAttributeSource">
      <ref local="attrSource"/>
    </property>
  </bean>

 

// 拦截的方法设定。
  <tx:advice id="transactionInterceptor" >
    <tx:attributes>
      <tx:method name="execute*" propagation="REQUIRED" rollback-for="java.lang.Exception"/>
      <tx:method name="insert*"  propagation="REQUIRED" rollback-for="java.lang.Exception"/>
      <tx:method name="update*"  propagation="REQUIRED" rollback-for="java.lang.Exception"/>
      <tx:method name="delete*"  propagation="REQUIRED" rollback-for="java.lang.Exception"/>
      <tx:method name="select*"  propagation="REQUIRED" rollback-for="java.lang.Exception" read-only="true"/>
    </tx:attributes>
  </tx:advice>

5.输出日志的设定。

6.事务管理的自动代理AutoProxy的设定。

    <bean id="autoProxy"
      class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
      <property name="interceptorNames">
      <list>
        <idref local="transactionInterceptor"/>
      </list>
      </property>
       <property name="beanNames">
         <list>
            <value>*DAO</value>
         </list>
       </property>
    </bean>

7.AOP设定。

    <aop:config>
        <aop:pointcut id="daoBeans" expression="bean(*DAO)"/>
        <aop:advisor
             pointcut-ref="daoBeans"
             advice-ref="transactionInterceptor"/>
        <aop:advisor
             pointcut-ref="daoBeans"
             advice-ref="debugInterceptor"/>
    </aop:config>

8.Ibatis相关设定。

    <bean id="dataSource"
      class="org.apache.commons.dbcp.BasicDataSource"
      destroy-method="close">
      <property name="driverClassName"
       value="oracle.jdbc.OracleDriver" />
      <property name="url"
      value="jdbc:oracle:thin:@172.20.2.53:1521:yum" />
      <property name="username" value="yum" />
      <property name="password" value="yum" />
      <property name="poolPreparedStatements" value="true" />
      <property name="defaultAutoCommit" value="false" />
      <!-- property name="maxActive" ref="threadSize"/ -->
     </bean>
     // Ibatis配置文件

     <bean id="sqlMapClient"
         class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
         <property name="configLocation" value="WEB-INF/sqlMapConfig.xml">
         </property>
         <property name="dataSource">
           <ref bean="dataSource"/>
         </property>
     </bean>

     9.应用程序中所常用到的DAO的注入。

     <bean id="queryDAO"
        class="jp.terasoluna.fw.dao.ibatis.QueryDAOiBatisImpl">
        <property name="sqlMapClient"><ref local="sqlMapClient"/></property>
     </bean>
     <bean id="updateDAO"
         class="jp.terasoluna.fw.dao.ibatis.UpdateDAOiBatisImpl">
        <property name="sqlMapClient"><ref local="sqlMapClient"/></property>
     </bean>
     <bean id="spDAO"
         class="jp.terasoluna.fw.dao.ibatis.StoredProcedureDAOiBatisImpl">
        <property name="sqlMapClient"><ref local="sqlMapClient"/></property>
     </bean>

     综上,applicationContext.xml中配置到的bean全是整个工程所需要的共通的bean,其实质仍然是一个Spring的注入配置文件。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约