送你一套純淨版的 SSM 架構

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

 

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

 

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

 

首先整合 Mybatis 和 Spring。 這 3 大框架都有一個核心配置文件,咱們搭建環境環境主要就是在配置文件裏面配置一下。spring

 

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

 

獲得這些對象,首先咱們須要與數據庫進行鏈接,天然就須要數據庫鏈接池和鏈接數據庫的 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 文件。apache

 

   <!-- 配置 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 來管理的。mybatis

 

   <!-- 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 中咱們還能夠配置事務的操做。mvc

 

   <!-- 配置事務 -->
    <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 這種經典的架構仍是有好多公司在用呀!

相關文章
相關標籤/搜索