Maven 構(gòu)建SSM框架配置

? ? ? ? 對于maven的項目構(gòu)建和依賴管理在這里先不做詳細(xì)配置介紹,之后應(yīng)該會做詳細(xì)的補充,今天先寫寫在maven聚合工程中對于SSM的配置整合(提到的其他配置暫不做說明),這里也會貼出整合之后的配置代碼寒亥,整合過程一筆帶過:


整合思路:1冲九、Dao層的整合 ? 2搀军、service層的整合 ? 3卵慰、表現(xiàn)層的整合


1、對于Dao層的整合榴芳,無非就是對數(shù)據(jù)庫的操作配置嗡靡,整合之前,在mybatis操作數(shù)據(jù)庫的配置文件中(SqlMapConfig.xml)可以配置通過db.propertie配置數(shù)據(jù)庫連接池(JDBC DBCP C3P0 Druid等)窟感,掃描mapper配置文件讨彼,

配置SqlSessionFactory,對pojo起別名等(使用逆向工程生成pojo和mapper不必要再起別名)

在spring整合mybatis后柿祈,對于mybatis的配置哈误,我們只需在構(gòu)建項目的dao層中的resourses中配置SqlMapConfig.xml文件即可(是否起別名看個人喜好或者使用逆向工程沒必要起),因為對于數(shù)據(jù)庫的操作被spring接管躏嚎,所以我們在dao層中的resourses中配置applicationContext-dao.xml文件蜜自,在此文件中配置dataSource(通過db.properties),sqlSessionFactory卢佣,掃描mapper重荠。到此,Dao層的整合大致完善虚茶。

SqlMapConfig.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE configuration ? PUBLIC "-//mybatis.org//DTD Config 3.0//EN" ? "http://mybatis.org/dtd/mybatis-3-config.dtd">

<configuration>

? ? <typeAliases>

? ? ? ? ? <package name="com.xxx.xxx.pojo"/>

? ? </typeAliases>

</configuration>

applicationContext-dao.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

? ? ? ? ? ? xmlns="http://www.springframework.org/schema/beans"

? ? ? ? ? ? xmlns:context="http://www.springframework.org/schema/context"

? ? ? ? ? ? xsi:schemaLocation="http://www.springframework.org/schema/beans

? ? ? ? ? ? http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

? ? ? ? ? ?http://www.springframework.org/schema/context

? ? ? ? ? ?http://www.springframework.org/schema/context/spring-context-4.2.xsd ">

<!-- db.properties -->

<!-- 數(shù)據(jù)源 -->

<context:property-placeholder location="classpath:mybatis/db.properties"/>
<bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">

? ? ? ? ? <property name="driverClassName" value="${jdbc.driver}" />

? ? ? ? ? <property name="url" value="${jdbc.url}" />

? ? ? ? ?<property name="username" value="${jdbc.username}" />

? ? ? ? ?<property name="password" value="${jdbc.password}" />

</bean>

<!-- 配置SqlSessionfactory -->

<bean class="org.mybatis.spring.SqlSessionFactoryBean">

? ? ? ? ?<property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property>

? ? ? ? ?<property name="dataSource" ref="dataSource"></property>

</bean>

<!-- 配置Mapper掃描 -->

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">

? ? ? ? ? ?<property name="basePackage" value="com.xxx.xxx.mapper"></property>

</bean>

</beans>


2戈鲁、對于Service層的整合,就是通過spring對service的掃描嘹叫,但為了脈絡(luò)的清晰婆殿,我們在聚合工程中service層的sources中配置applicationContext-service.xml,在此配置文件中除了約束就是我們對service層的掃描罩扇。

其外由于service層是我們操作CURD的層面婆芦,所以在service層我們需要一個事務(wù),進而我們就再次配置applicationContext-tx.xml(配置事務(wù)管理器暮蹂,通知寞缝,切面等)

applicationContext-service.xml文件

<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

? ? ? ? ? ? xmlns="http://www.springframework.org/schema/beans"

? ? ? ? ? ? xmlns:context="http://www.springframework.org/schema/context"

? ? ? ? ? ? xsi:schemaLocation="http://www.springframework.org/schema/beans

? ? ? ? ? ? http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

? ? ? ? ? ? http://www.springframework.org/schema/context

? ? ? ? ? ? http://www.springframework.org/schema/context/spring-context-4.2.xsd ">

<context:component-scan base-package="com.xxx.xxx.service"></context:component-scan>

</beans>

applicationContext-tx.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<beans xmlns="http://www.springframework.org/schema/beans"

? ? ? ? ? ? xmlns:context="http://www.springframework.org/schema/context" ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? xmlns:p="http://www.springframework.org/schema/p"

? ? ? ? ?xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"

? ? ? ? ? xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

? ? ? ? ? xsi:schemaLocation="http://www.springframework.org/schema/beans ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

? ? ? ? ? http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.2.xsd

? ? ? ? ? http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.2.xsd ? ? ? ? ? ? ? http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.2.xsd

? ? ? ? ? http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.2.xsd">

<!-- 事務(wù)管理器 -->

<bean id="transactionManager" ? ?class="org.springframework.jdbc.datasource.DataSourceTransactionManager">

? ? ? ? ? ?<!-- 數(shù)據(jù)源 -->

? ? ? ? ? ?<property name="dataSource" ref="dataSource" />

</bean>

<!-- 通知 -->

<tx:advice id="txAdvice" transaction-manager="transactionManager">

? ? ? ? ? <tx:attributes>

? ? ? ? ? ? ? ? <!-- 傳播行為 -->

? ? ? ? ? ? ? <tx:method name="save*" propagation="REQUIRED" />

? ? ? ? ? ? ? ?<tx:method name="insert*" propagation="REQUIRED" />

? ? ? ? ? ? ? <tx:method name="add*" propagation="REQUIRED" />

? ? ? ? ? ? ? <tx:method name="create*" propagation="REQUIRED" />

? ? ? ? ? ? ? <tx:method name="delete*" propagation="REQUIRED" />

? ? ? ? ? ? ? <tx:method name="update*" propagation="REQUIRED" />

? ? ? ? ? ? ? <tx:method name="find*" propagation="SUPPORTS" read-only="true" />

? ? ? ? ? ? ?<tx:method name="select*" propagation="SUPPORTS" read-only="true" />

? ? ? ? ? ? ?<tx:method name="get*" propagation="SUPPORTS" read-only="true" />

? ? ? ? ? </tx:attributes>

</tx:advice>

<!-- 切面 -->

<aop:config>

? ? ? < aop:advisor advice-ref="txAdvice" ? ? ? pointcut="execution(* com.xxx.xxx.service.*.*(..))" />

</aop:config>

</beans>


3、對于表現(xiàn)層的整合仰泻,我們體現(xiàn)在springmvc.xml中,其中有對controller的掃描滩届;注解驅(qū)動加載處理器映射器集侯,處理器適配器被啼,視圖解析器(配置前后綴可簡化action返回某個jsp代碼),配置攔截與放行棠枉,異常處理器浓体,上傳文件解析器等

springmvc.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<beans

? ? ? ? ? ?xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

? ? ? ? ? ?xmlns="http://www.springframework.org/schema/beans"

? ? ? ? ? ? xmlns:context="http://www.springframework.org/schema/context"

? ? ? ? ? ? xmlns:mvc="http://www.springframework.org/schema/mvc"

? ? ? ? ? ?xsi:schemaLocation="http://www.springframework.org/schema/beans

? ? ? ? ? ? http://www.springframework.org/schema/beans/spring-beans-4.2.xsd

? ? ? ? ? ?http://www.springframework.org/schema/context

? ? ? ? ? ?http://www.springframework.org/schema/context/spring-context-4.2.xsd

? ? ? ? ? ?http://www.springframework.org/schema/mvc

? ? ? ? ? ? http://www.springframework.org/schema/mvc/spring-mvc-4.2.xsd ">

<context:component-scan base-package="com.xxx.xxx.controller"></context:component-scan>

<!--這個是我上傳文件的路徑properties文件-->

<context:property-placeholder location="classpath:spring/conf.properties"/>

<!-- 注解驅(qū)動可以自動加載最新的處理器映射器和處理器適配器 -->

<mvc:annotation-driven/>

<bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">

? ? ? ? < property name="prefix" value="/WEB-INF/"></property>

? ? ? ? <property name="suffix" value=".jsp"></property>

</bean>

<!-- 釋放被攔截的靜態(tài)資源 -->

<mvc:default-servlet-handler/>

<mvc:interceptors>

? ? ? ? ?<mvc:interceptor>

? ? ? ? ? ? ? ? <mvc:mapping path="/**"/>

? ? ? ? ? ? ? ? ?<mvc:exclude-mapping path="/user/**"/>(窄劃路徑下放行)

? ? ? ? ? ? ? ? ? <mvc:exclude-mapping path="/xxx/**"/>(窄劃路徑下放行)

? ? ? ? ? ? ? ? ? ?<mvc:exclude-mapping path="/css/**"/>

? ? ? ? ? ? ? ? ? <mvc:exclude-mapping path="/js/**"/>

? ? ? ? ? ? ? ? ? ? <mvc:exclude-mapping path="/img/**"/>

? ? ? ? ? ? ? ? ? ? <mvc:exclude-mapping path="/fonts/**"/>

? ? ? ? ?<bean class="com.xxx.xxx.interceptor.xxxInterceptor"></bean>(interceptor攔截)

? ? ? ? ?</mvc:interceptor>

</mvc:interceptors>

<bean class="com.jnmd.exception.HandlerException"></bean>(異常處理)

<!--文件上傳-->

<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">

? ? ? ? <property name="maxUploadSize" value="512000"></property>

</bean>

</beans>


最后就是web.xml的配置,作為項目的核心配置辈讶,需要配置springmvc前端控制器DispatcherServlet命浴,再通過指定springmvc在classpath的路徑加載springmvc;還需加載spring容器并指定applicationContext在classpath下的路徑贱除;

另外生闲,web.xml中還需配置解決post亂碼的filter

web.xml文件

<?xml version="1.0" encoding="UTF-8"?>

<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">

<display-name></display-name>

<welcome-file-list>

? ? ? ? <welcome-file>index.jsp</welcome-file>

</welcome-file-list>

<!-- 可以解決POST亂碼問題 -->

<filter>

? ? ? ? <filter-name>encoding</filter-name>

? ? ? ? <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>

? ? ? ?<!-- 設(shè)置編碼參是UTF8 -->

? ? ? ? <init-param>

? ? ? ? ? ? ? <param-name>encoding</param-name>

? ? ? ? ? ? ? <param-value>UTF-8</param-value>

? ? ? ?</init-param>

</filter>

<filter-mapping>

? ? ? ? ?<filter-name>encoding</filter-name>

? ? ? ? ? <url-pattern>/*</url-pattern>

</filter-mapping>

<servlet>

? ? ? ? <servlet-name>dispatcherServlet</servlet-name>

? ? ? ? <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>

? ? ? ? <init-param>

? ? ? ? ? ? ? ? <param-name>contextConfigLocation</param-name>

? ? ? ? ? ? ? ? <param-value>classpath:spring/springmvc.xml</param-value>

? ? ? ?</init-param>

? ? ? <load-on-startup>1</load-on-startup>

</servlet>

<servlet-mapping>

? ? ? ? ? ?<servlet-name>dispatcherServlet</servlet-name>

? ? ? ? ? <url-pattern>/</url-pattern>

</servlet-mapping>

<!-- 兩者相結(jié)合,可以將Spring配置web容器中 -->

<listener>

? ? ? <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>

</listener>

<context-param>

? ? ? ? <param-name>contextConfigLocation</param-name>

? ? ? <param-value>classpath:spring/applicationContext-*.xml</param-value>

</context-param>

</web-app>

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末月幌,一起剝皮案震驚了整個濱河市碍讯,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌扯躺,老刑警劉巖捉兴,帶你破解...
    沈念sama閱讀 211,265評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異录语,居然都是意外死亡倍啥,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,078評論 2 385
  • 文/潘曉璐 我一進店門澎埠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逗栽,“玉大人,你說我怎么就攤上這事失暂”顺瑁” “怎么了?”我有些...
    開封第一講書人閱讀 156,852評論 0 347
  • 文/不壞的土叔 我叫張陵弟塞,是天一觀的道長凭峡。 經(jīng)常有香客問我,道長决记,這世上最難降的妖魔是什么摧冀? 我笑而不...
    開封第一講書人閱讀 56,408評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮系宫,結(jié)果婚禮上索昂,老公的妹妹穿的比我還像新娘。我一直安慰自己扩借,他們只是感情好椒惨,可當(dāng)我...
    茶點故事閱讀 65,445評論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著潮罪,像睡著了一般康谆。 火紅的嫁衣襯著肌膚如雪领斥。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,772評論 1 290
  • 那天沃暗,我揣著相機與錄音月洛,去河邊找鬼。 笑死孽锥,一個胖子當(dāng)著我的面吹牛嚼黔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播惜辑,決...
    沈念sama閱讀 38,921評論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼唬涧,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了韵丑?” 一聲冷哼從身側(cè)響起爵卒,我...
    開封第一講書人閱讀 37,688評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎撵彻,沒想到半個月后钓株,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,130評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡陌僵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,467評論 2 325
  • 正文 我和宋清朗相戀三年轴合,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片碗短。...
    茶點故事閱讀 38,617評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡受葛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出偎谁,到底是詐尸還是另有隱情总滩,我是刑警寧澤,帶...
    沈念sama閱讀 34,276評論 4 329
  • 正文 年R本政府宣布巡雨,位于F島的核電站闰渔,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏铐望。R本人自食惡果不足惜冈涧,卻給世界環(huán)境...
    茶點故事閱讀 39,882評論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望正蛙。 院中可真熱鬧督弓,春花似錦、人聲如沸乒验。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,740評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽徊件。三九已至奸攻,卻和暖如春蒜危,著一層夾襖步出監(jiān)牢的瞬間虱痕,已是汗流浹背睹耐。 一陣腳步聲響...
    開封第一講書人閱讀 31,967評論 1 265
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留部翘,地道東北人硝训。 一個月前我還...
    沈念sama閱讀 46,315評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像新思,于是被迫代替她去往敵國和親窖梁。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,486評論 2 348

推薦閱讀更多精彩內(nèi)容