一般而言,Terasoluna特指Terasoluna For Java版。该框架集合了Spring,Struts 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的注入配置文件。
|