送你一套純淨版的 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 這種經典的架構還是有好多公司在用呀!