SSM 一般是分开学的, Spring,SpringMVC,Mybatis. 学完之后整合也是需要学习一段时间. 下面是一次整合的实践...
SSM 的整合顺序一般先整合 Spring 和 Mybatis. 再整合 SpringMVC.
Spring 整合 Mybatis
首先把文件放到 lib 的文件夹下.
然后在 src 目录下新建 Spring 的配置文件 (applicationContext.xml).
然后开启自动扫描.
- <!-- 自动扫描组件 -->
- <!-- 扫描全部的包 -->
- <context:component-scan base-package="com.xxx" />
然后 applicationContext.xml 整合 mybatis 的全局配置文件. 这个 Bean 的名字是固定的. org.springframework.beans.factory.config.PropertyPlaceholderConfigurer, 通过这个 bean, 可以通过 db.properties 文件中的 key 使用 value.
- <!-- 数据库相关配置
- 引入数据库配置文件 db.properties 以后, 是的 ${} 可以使用.
- -->
- <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
- <property name="location" value="classpath:db.properties" />
- </bean>
创建一个数据源的对象, 类名固定 org.apache.commons.dbcp.BasicDataSource. 这里可以直接使用 db.properties 中的 key.
- <!-- 创建一个数据源对象 -->
- <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
- <!-- 设置数据源连接的参数 -->
- <property name="driverClassName" value="${driver}" />
- <property name="url" value="${url}" />
- <property name="username" value="${user}" />
- <property name="password" value="${pwd}" />
- <!-- 其他参数 -->
- <!-- <property name="initialSize" value="30"></property> -->
- </bean>
配置 SqlSessionFactory 的 bean
- <!-- 配置 sqlsessionFactory 对象 -->
- <bean class="org.mybatis.spring.SqlSessionFactoryBean" id="sqlSessionFactoryBean">
- <!-- 必须数据源 -->
- <property name="dataSource" ref="dataSource" />
- <!-- 配置映射文件对应的路径, Ant 风格 -->
- <property name="mapperLocations" value="classpath:com/xxx/xxx/dao/*.xml" />
- </bean>
注入映射器:
? 有两种方法.
较第二种简单一些, 扫描 dao 包下所有的配置.
- <!-- 使用扫描器, 扫描某个包底下的所有的 Mapper 接口 -->
- <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
- <!-- 要扫描的基本包 -->
- <property name="basePackage" value="com.ssm.dao" />
- <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryBean" />
- </bean>
一个个的单独配置
- <!-- 注入映射器 -->
- <!-- 注入 BlogMapper -->
- <bean id="blogMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
- <property name="sqlSessionFactory" ref="sqlSessionFactoryBean" />
- <!-- 指定接口类型 -->
- <property name="mapperInterface" value="com.ckwl.ssm.dao.BlogMapper" />
- </bean>
配置到这里, 已经能在 dao 包中, 使用 Mapper.xml 配置文件, 也可以在 Dao 上使用注解, 2 者取其一.
这里不需要在 dao 上注解 @Repository. 在 Service 层上需要需要注解 @Service, 具体视情况而定. 在 @Service 中注入 Dao 用 @Resource 通过名字注入.
整合 SpringMVC
加入 SpringMVC 的配置文件到 src 目录下. 一个小例子.
- <!-- 自动扫描 -->
- <context:component-scan base-package="com.ssm" />
- <!-- 配置处理器映射器 -->
- <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping"></bean> -->
- <!-- 配置处理器适配器 -->
- <!-- <bean class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter"></bean> -->
- <!-- 自动注解驱动, 这个配置可以取代上面的两个配置 (处理器映射器和处理器适配器) -->
- <mvc:annotation-driven />
- <!-- 视图解析器 -->
- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
- <!-- 前缀 -->
- <property name="prefix" value="/" />
- <!-- 后缀 -->
- <property name="suffix" value=".jsp" />
- </bean>
编写自己的 Controller 和视图 (JSP,Thymeleaf 等).
修改 Web.xml, 加载 spring,springmvc 配置文件
- <!-- 加载 spring 的配置文件 -->
- <!-- needed for ContextLoaderListener -->
- <context-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:applicationContext.xml</param-value>
- </context-param>
- <!-- Bootstraps the root web application context before servlet initialization -->
- <listener>
- <listener-class>org.springframework.Web.context.ContextLoaderListener</listener-class>
- </listener>
- <!-- 配置前端控制器 -->
- <!-- The front controller of this Spring Web application, responsible for handling all application requests -->
- <servlet>
- <servlet-name>springDispatcherServlet</servlet-name>
- <servlet-class>org.springframework.Web.servlet.DispatcherServlet</servlet-class>
- <init-param>
- <param-name>contextConfigLocation</param-name>
- <param-value>classpath:springmvc-servlet.xml</param-value>
- </init-param>
- <load-on-startup>1</load-on-startup>
- </servlet>
- <!-- Map all requests to the DispatcherServlet for handling -->
- <servlet-mapping>
- <servlet-name>springDispatcherServlet</servlet-name>
- <url-pattern>*.action</url-pattern>
- </servlet-mapping>
来源: http://www.bubuko.com/infodetail-3343141.html