? ? ? ? 對于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>