1. 程式人生 > >送你一套純淨版的 SSM 架構

送你一套純淨版的 SSM 架構

大致介紹一下,目前 Java 中使用比較多的框架組合就是 Spring 、Springmvc 、Mybatis ,這 3 個框架也就是我們常說的 SSM。

 

前面陸陸續續也已經介紹完了這 3 個框架,今天就來整合一下它們幾個。以後就可以直接拿來用了,多好,不用吭哧吭哧的搭框架了。

 

首先,搭框架要有個順序,從底層開始搞起,先處理持久層,一層一層的來才不會出現遺漏的現象。

 

首先整合 Mybatis 和 Spring。 這 3 大框架都有一個核心配置檔案,我們搭建環境環境主要就是在配置檔案裡面配置一下。

 

我們知道在 Mybatis 中,核心的物件是 SqlSessionFactory, 而一旦與 Spring 整合,就要發揮 Spring 物件管家的角色,這些核心物件都會交給 Spring 來進行管理。

 

得到這些物件,首先我們需要與資料庫進行連線,自然就需要資料庫連線池和連線資料庫的 properties 檔案。

 

   <!-- 載入資料庫配置檔案 -->
    <context:property-placeholder location="classpath:db.properties"/>

    <!-- 配置連線池 -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="${jdbc.driver}" />
        <property name="url" value="${jdbc.url}" />
        <property name="username" value="${jdbc.username}" />
        <property name="password" value="${jdbc.password}" />
        <property name="maxActive" value="10" />
        <property name="maxIdle" value="5" />
    </bean>

 

SqlSessionFactory 在操作資料庫的時候還可能會有一些特性化的操作,比方說,配置 POJO 的別名。所以 SqlSessionFactory 的生成還依賴與 Mybatis 的核心配置檔案 sqlMapConfig.xml 檔案。

 

   <!-- 配置 SqlSessionFactory 物件 -->
    <bean id="sqlSessionFactoryBean" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
    </bean>

 

Mybatis 還有一大特性就是 Mapper 動態介面開發,生成的這些介面的實現類肯定還是要交給 Spring 來管理的。

 

   <!-- mapper 動態代理 配置掃描路徑 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.yu.dao"/>
    </bean>

 

以上這些即可達到 Spring 中整合 Mybatis 的效果,其實主旨就是將 Mybatis 中的核心物件 SqlSessionFactory 和需要在 Service 層用到 DAO 層介面的實現類交由 Spring 管理。

 

當然,在 Spring 的核心配置檔案 applicationContext.xml 中我們還可以配置事務的操作。

 

   <!-- 配置事務 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource" />
    </bean>

    <!-- 開啟註解事務 -->
    <tx:annotation-driven transaction-manager="transactionManager"/>

 

完成了 Spring 和 Mybatis 的合併,想想專案中分層的開發思想,我們已經解決了 DAO 和 Service 層。最後還剩下一個 Springmvc,它和 Spring 本就是一家,所以直接拿來用即可。

 

說到 Springmvc 主要關注的是 web 層的配置,它的相關配置都在配置檔案 springmvc.xml 中,在 web 層,我們需要呼叫 Service 層的物件以及將 web 層的物件注入到 Spring 中。

 

所以,第一步就是配置使用註解的形式掃描包,這樣,物件就都進入 Spring 容器了。

 

     <!-- 掃描@Controler  @Service   -->
        <context:component-scan base-package="com.yu"/>

  

 

上次已經說過了,Springmvc 中是一箇中心,若干個基本點。這裡至少需要配置 3 個物件,處理器對映器,處理器介面卡,檢視解析器。

 

       <!-- 註解驅動:這一行註釋就注入了 處理器對映器和處理器介面卡 -->
        <mvc:annotation-driven />

        <!-- 檢視直譯器 -->
        <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
            <property name="prefix" value="/WEB-INF/jsp/"/>
            <property name="suffix" value=".jsp"/>
        </bean>

 

當然 Springmvc 還給我們提供了很多比較常用的功能,比方說檔案上傳、異常處理器、攔截器,這些都是可選的功能呀。

 

<!-- 配置異常處理器 -->
        <bean class = "com.yu.exception.MyExceptionResolver"/>

        <!-- 配置處理圖片的實現類 -->
        <bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
            <!-- 圖片最大位元組數 -->
            <property name="maxUploadSize" value="100000"></property>
        </bean>

        <!-- 配置 Spring mvc 攔截器 -->
        <mvc:interceptors>
            <mvc:interceptor>
                <mvc:mapping path="/**"/>
                <!-- 自定義的攔截器類 -->
                <bean class="com.yu.interceptor.Interceptor1"></bean>
            </mvc:interceptor>
        </mvc:interceptors>

 

最後不要忘了,配置的挺好,但是專案啟動,沒有載入配置檔案一切都是扯蛋,我們需要在 web.xml 中配置 Spring 的監聽器和 Springmvc 中的老大哥前端控制器並載入相應的配置檔案。

 

說在最後,搭框架這種事,一年可能也搭不了一次,這麼多的配置經常忘是很正常的,所以我強烈建議大家保留一份比較純潔的配置。

 

這麼貼心的我,自然是給你們準備好了。

公號後臺回覆【ssm】即可獲取。

PS. 歡迎關注我的個人公眾號:【餘同學的開發之路

 

最最後: 有同學和我說,現在 Spring Boot 比較火了,是的,不否認,現在 Spring Boot  用的越來越多,但是 SSM 這種經典的架構還是有好多公司在用呀!