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