一般而言,Terasoluna特指Terasoluna For Java版。該框架集合了Spring,Struts 1.0以及Ibatis三個框架,并進行了一定程度的擴展(如對輸入文字提交時進行的驗證)。該框架進一步進行了封裝,使得開發(fā)人員更加注重于業(yè)務(wù)邏輯的編寫(Terasoluna中成為Blogic)。
applicationContext.xml,全局配置文件。其中包含了
1.Controller的注入,用來進行表單提交時的攔截,如權(quán)限不夠或URL是非法的情形,則會進行錯誤的處理。其中需要注入的bean是由開發(fā)者自己實現(xiàn)的接口jp.terasoluna.fw.web.thin.AuthenticationController。
2.DataSource相關(guān)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.事務(wù)管理器的注入。具體參照一下,需要關(guān)聯(lián)DataSource。
// 事務(wù)管理器的創(chuàng)建
<bean id="transactionManager"
class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource">
<ref bean="TerasolunaSampleDataSource"/>
</property>
</bean>
// 對需要進行事務(wù)管理的處理進行設(shè)置
<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>
事務(wù)處理的類是由Spring提供的。
4.事務(wù)管理器攔截設(shè)定。
<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor">
<property name="transactionManager">
<ref bean="transactionManager"/>
</property>
<property name="transactionAttributeSource">
<ref local="attrSource"/>
</property>
</bean>
// 攔截的方法設(shè)定。
<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.輸出日志的設(shè)定。
6.事務(wù)管理的自動代理AutoProxy的設(shè)定。
<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設(shè)定。
<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相關(guān)設(shè)定。
<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.應(yīng)用程序中所常用到的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,其實質(zhì)仍然是一個Spring的注入配置文件。