Spring整合SpringMVC,MyBatis
一 Spring整合SpringMVC

思路:首先让Spring和SpringMVC各自可能运行,而后再整合到一起

第一步:搭建Spring环境
1.引入坐标(pom.xml)

<!--版本锁定--><properties>        <maven.compiler.source>1.8</maven.compiler.source>    <maven.compiler.target>1.8</maven.compiler.target>    <spring.version>5.0.2.RELEASE</spring.version>    <slf4j.version>1.6.6</slf4j.version>    <log4j.version>1.2.12</log4j.version>    <mysql.version>5.1.6</mysql.version>    <mybatis.version>3.4.5</mybatis.version>  </properties>
<!--导入坐标-->  <dependencies>    <!-- spring -->    <dependency>      <groupId>org.aspectj</groupId>      <artifactId>aspectjweaver</artifactId>      <version>1.6.8</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-aop</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-context</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-web</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-webmvc</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-test</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-tx</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>org.springframework</groupId>      <artifactId>spring-jdbc</artifactId>      <version>${spring.version}</version>    </dependency>    <dependency>      <groupId>junit</groupId>      <artifactId>junit</artifactId>      <version>4.12</version>      <scope>compile</scope>    </dependency>    <dependency>      <groupId>mysql</groupId>      <artifactId>mysql-connector-java</artifactId>      <version>${mysql.version}</version>    </dependency>    <dependency>      <groupId>javax.servlet</groupId>      <artifactId>servlet-api</artifactId>      <version>2.5</version>      <scope>provided</scope>    </dependency>    <dependency>      <groupId>javax.servlet.jsp</groupId>      <artifactId>jsp-api</artifactId>      <version>2.0</version>      <scope>provided</scope>    </dependency>    <dependency>      <groupId>jstl</groupId>      <artifactId>jstl</artifactId>      <version>1.2</version>    </dependency>    <!-- log start -->    <dependency>      <groupId>log4j</groupId>      <artifactId>log4j</artifactId>      <version>${log4j.version}</version>    </dependency>    <dependency>      <groupId>org.slf4j</groupId>      <artifactId>slf4j-api</artifactId>      <version>${slf4j.version}</version>    </dependency>    <dependency>      <groupId>org.slf4j</groupId>      <artifactId>slf4j-log4j12</artifactId>      <version>${slf4j.version}</version>    </dependency>    <!-- log end -->    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis</artifactId>      <version>${mybatis.version}</version>    </dependency>    <dependency>      <groupId>org.mybatis</groupId>      <artifactId>mybatis-spring</artifactId>      <version>1.3.0</version>    </dependency>    <dependency>      <groupId>c3p0</groupId>      <artifactId>c3p0</artifactId>      <version>0.9.1.2</version>      <type>jar</type>      <scope>compile</scope>    </dependency>  </dependencies>

2.编写Spring的配置文件:applicationContext.xml
将配置文件都放在rescourse目录下,便于管理

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:aop="http://www.springframework.org/schema/aop"       xmlns:tx="http://www.springframework.org/schema/tx"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="http://www.springframework.org/schema/beans    http://www.springframework.org/schema/beans/spring-beans.xsd    http://www.springframework.org/schema/tx    http://www.springframework.org/schema/tx/spring-tx.xsd    http://www.springframework.org/schema/aop    http://www.springframework.org/schema/aop/spring-aop.xsd    http://www.springframework.org/schema/context    http://www.springframework.org/schema/context/spring-context.xsd">    <!--开启注解扫描,只扫描service和dao,不扫描Controller-->    <context:component-scan base-package="com.ssm">        <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>    </context:component-scan></beans>

在增加依赖时,会报红,解决办法:
File | Settings | Languages & Frameworks | Schemas and DTDs

增加报红语句:http://www.springframework.org/schema/tx即可

第二步:搭建SpringMVC的环境
配置前端控制器

<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:springmvc.xml</param-value>    </init-param>  </servlet>  <servlet-mapping>    <servlet-name>dispatcherServlet</servlet-name>    <url-pattern>/</url-pattern>  </servlet-mapping>

配置springmvc.xml

<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:mvc="http://www.springframework.org/schema/mvc"       xmlns:context="http://www.springframework.org/schema/context"       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.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd">    <!-- 配置spring创立容器时要扫描的包,这里只扫描controller包 -->    <context:component-scan base-package="com.ssm">        <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>    </context:component-scan>    <!-- 配置视图解析器 -->    <bean id="viewResolver" class="org.springframework.web.servlet.view.InternalResourceViewResolver">        <property name="prefix" value="/WEB-INF/pages/"></property>        <property name="suffix" value=".jsp"></property>    </bean>    <!--开启注解反对-->    <mvc:annotation-driven></mvc:annotation-driven></beans>

第三步:整合Spring和SpingMVC

实质是在SpringMVC在Controller的办法中调用service的办法要解决的问题:启动web我的项目时,只扫描了SpringMVC的配置文件,没有扫描Spring的配置文件applicationContext.xml,因而就不会将service,dao类加载到容器中解决办法:利用监听器,在监听到服务器启动时,加载Spring的配置文件

Spring的配置文件加载原理:

1.ServletContext:web我的项目最大的域对象,在服务器启动时创立,且只会创立一个实例对象,服务器敞开时该实例被销毁。2. 一类监听器:能够监听ServletContext实例的创立和销毁。ServletContext只会实例化一次因而监听器只会执行一次3.让监听器去加载Spring的配置文件,加载后创立web版本工厂,存储在ServletContext对象中,须要应用时去ServletContext对象中拿

在web.xml中配置监听器

<!--配置监听器,默认只加载WEB-INF目录下的applicationContext.xml配置文件,但当初的配置文件在src的resource目录下-->  <!--解决办法:设置配置文件的门路(context-param),不必默认的加载门路-->  <listener>    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>  </listener>  <context-param>    <param-name>contextConfigLocation</param-name>    <param-value>classpath:applicationContext.xml</param-value>  </context-param>

加载spring的配置文件后,就能在Controller类中注入service和dao的类

@Controller@RequestMapping("test")public class AccountController{    //依赖注入    @Autowired  //主动注入    private AccountService accountService;    @RequestMapping("/hello")    public String Hello(){        System.out.println("AccountController的Hello办法执行了");        accountService.findAll();        return  "success";    }}

Spring整合SpringMVC实现

第四步 搭建Mybatis环境