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

送你一套純凈版的 SSM 架構

onf name 純潔 cti text 管理 pojo gmv 管家

大致介紹一下,目前 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 這種經典的架構還是有好多公司在用呀!

送你一套純凈版的 SSM 架構