dwr+spring+ibatis集成

做了个综合点的项目写一下我个人心得吧

  • 考虑也许底层会改用hibernate做底层,所以新建了个工程,是ibtais的访问数据库的公共接口,

公共实现类以及对应javabean的实现类和接口

  • 把xml,.properties文件全部存放在特定的包下,方便C/S模式测试

    applicationContext.xml文件:

  • 如果在目标配置文件中要使用源配置文件中的内容:

  <import resource="源配置文件.xml" />

  • 导入 *.properties 配置文件:
<bean id="propertyConfigurer"   class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
    <property name="locations">
        <list>               
            <value>classpath:org\crmproject\xml\jdbc.properties</value>
        </list>
    </property>
</bean>

 

配置数据库连接:
	<bean id="dataSource"
		class="org.springframework.jdbc.datasource.DriverManagerDataSource"
		destroy-method="close" lazy-init="default" autowire="default"
		dependency-check="default">		
		<property name="driverClassName" value="${jdbc.driverClassName}"/>
		<property name="url" value="${jdbc.url}"/>
		<property name="username" value="${jdbc.username}"/>
		<property name="password" value="${jdbc.password}"/>
	</bean>

 在配置文件中引用的 *.properties配置文件中对应的内容:
通过: ${键名} 来引用

  • 通过 bean 节点的id 属性来标识 class 属性对应的类 SqlMapClientFactoryBean 工厂

类解析 sqlMapConfig.xml 配置文件所生成的类 同时 将数据库的连接通过注入到
解析所生成的类中!

<bean id="sqlMapClient"
        class="org.springframework.orm.ibatis.SqlMapClientFactoryBean">
        <property name="configLocation">
            <value>
                   classpath:org\crmproject\xml\sqlMapConfig.xml
            </value>
        </property>
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>   
 </bean>

 导入Ibatis 中的sqlMapConfig.xml配置文件:
注意: sqlMapConfig.xml配置文件中,只需要导入要使用的实体类对应的配置文件
      如: <sqlMap resource="org/crmdb/xml/dept_SqlMap.xml"/>
     不需要配置连接数据库等节点属性

  • 事务处理
<!-- Transactions -->
    <bean id="TransactionManager" 
        class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource">
            <ref bean="dataSource"/>
        </property>
    </bean>
  • 接口代理

 

<bean id="AccountDao" 
        class="org.crmporject.dao.AccountSqlMapDao">
        <property name="sqlMapClient">
            <ref local="sqlMapClient"/>
        </property>
    </bean>

 

  • 实现类代理

 

<bean id="OrderService" 
        class="org.springframework.transaction.interceptor.TransactionProxyFactoryBean">
        <property name="transactionManager">
            <ref local="TransactionManager"></ref>
        </property>
        <property name="target">
            <bean class="org.crmproject.impl.service.OrderService">
                <property name="itemDao">
                    <ref bean="ItemDao"/>
                </property>
                <property name="orderDao">
                    <ref bean="OrderDao"/>
                </property>
                <property name="sequenceDao">
                    <ref bean="SequenceDao"/>
                </property>
            </bean>
        </property>
        <property name="transactionAttributes">
            <props>
                <prop key="insert*">PROPAGATION_REQUIRED</prop>
            </props>
        </property>
    </bean>

web.xml 配置文件中的信息说明:

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.4" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee   http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">



   <!--dwr 配置信息 -->

  <servlet>

    <servlet-name>dwr-invoke</servlet-name>

    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class> <!--该类是DwrServlet 在dwr包中封装                                                                                                            好的-->

    <init-param>

      <param-name>debug</param-name> <!-- 启动调式 -->

      <param-value>true</param-value>

    </init-param>

  </servlet>

  <servlet-mapping>

    <servlet-name>dwr-invoke</servlet-name>

    <url-pattern>/dwr/*</url-pattern> <!--当以/dwr/* 路径 请求时执行 -->

  </servlet-mapping>



  <listener>

	<listener-class>

			org.springframework.web.context.ContextLoaderListener <!-- spring 中的监听器当web容器加载时就会执行该监听器  -->

	</listener-class>

  </listener>

  <context-param>

      <param-name>contextConfigLocation</param-name>

      <param-value>

	  classpath:org/crmproject/xml/applicationContext.xml

      </param-value>

  </context-param>



  <welcome-file-list>

    <welcome-file>index.jsp</welcome-file>

  </welcome-file-list>

</web-app>

 dwr.xml 中的说明:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE dwr PUBLIC "-//GetAhead Limited//DTD Direct Web Remoting 2.0//EN" "http://getahead.org/dwr/dwr20.dtd">

<dwr>

  <allow>

  <!-- 把java中的一个类通过spring中的代理模式转换成javascript的一个类 -->

    <create javascript="ActionService" creator="spring">

      <param name="beanName" value="actionService"></param> 

<!--从内存中去找 bean 节点的 中id属性为 actionService 的 class对应的类转换成javascript 中的一个        ActionService 对象 -->

      		<include method="save"/> 

<!--向javascript 中提供一个公开的save 方法 -->

    </create>

    <!-- 在这里设置是要得到文本的值时一定要配的咯 -->

    <convert match="org.crmdb.model.Actioninfo" converter="bean"></convert>

   </allow>

</dwr>
 

你可能感兴趣的:(spring,xml,bean,ibatis,DWR)