【3】SSH整合-spring注入

【1】配置spring

在前面的基礎上編寫了DAO層,SERVICE層等的代碼,現在需要通過spring的配置文件將各層連接並進行注入

首先先配置數據源

<!-- 數據源配置 -->
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>   
    <property name="url" value="jdbc:mysql://localhost:3306/oa"></property>
    <property name="username" value="root"></property>
    <property name="password" value="root"></property>
    <property name="maxActive" value="100"></property>
    <property name="maxIdle" value="30"></property>
    <property name="maxWait" value="500"></property>
    <property name="defaultAutoCommit" value="true"></property>
</bean>

這也就是以前通過javabean等實現的連接數據庫操作,spring是通過連接池進行數據庫的連接的

接着配置與之相關的java類的關係

<bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="hibernateProperties">
        <props>
            <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
            <prop key="hibernate.show_sql">true</prop>
        </props>
    </property>
   
    <property name="mappingResources">
        <list>
            <value>oa/sean/bean/User.hbm.xml</value>
        </list>
    </property>
</bean>

將其注入到sessionfactory當中

整個過程就是這樣,然後將sessionfactory注入到DAO,DAO再注入到action當中,實現了從數據庫到jsp頁面的一套流程

下面配置dao層和服務層

<bean id="userDao" class="oa.sean.dao.impl.UserDAOImpl" scope="singleton">
    <property name="sessionFactory">
        <ref bean="sessionFactory"/>
    </property>
</bean>

<bean id="userService" class="oa.sean.service.impl.UserServiceImpl">
    <property name="userDao" ref="userDao"></property>
</bean>

注意:dao層是沒有狀態的,因此將其配置成singleton,默認的也是使用此方法

最後是注入到action當中

注意spring的配置文件當中的名稱要和struts當中定義的class一樣

見紅色所示:
<bean id="userService" class="oa.sean.service.impl.UserServiceImpl">
    <property name="userDao" ref="userDao"></property>
</bean>

<!-- 所有的action要設置成prototype性質的,可每次訪問生成一個實例,否則默認爲singleton,只生成一個實例 -->
<bean id="saveUserAction" class="oa.sean.action.user.SaveUserAction" scope="prototype">
    <property name="userService" ref="userService"></property>
</bean>

<bean id="listUserAction" class="oa.sean.action.user.ListUserAction" scope="prototype">
    <property name="userService" ref="userService"></property>
</bean>

<bean id="removeUserAction" class="oa.sean.action.user.RemoveUserAction" scope="prototype">
    <property name="service" ref="userService"></property>
</bean>

<bean id="updatePUserAction" class="oa.sean.action.user.UpdatePUserAction" scope="prototype">
    <property name="service" ref="userService"></property>
</bean>

<bean id="updateUserAction" class="oa.sean.action.user.UpdateUserAction" scope="prototype">
    <property name="service" ref="userService"></property>
</bean>

<!-- 有狀態的用prototype類型,沒狀態的用singleton,區分一個action是否有狀態,是否有相互區分的屬性 -->
<bean id="generateExcelAction" class="oa.sean.action.user.GenerateExcelAction" >
    <property name="service" ref="userService"></property>
</bean>
 

此時簡單的一個SSH就基本完成了

加上前臺的頁面就可以看到結果了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章