编写配置文件
(1)在Eclipse中,创建一个名为chapter17的Web项目,将整合所需的JAR包添加到项目的lib目录中,并发布到类路径下。
(2)在chapter17项目下,创建一个名为config的源文件夹(Source Folder),在该文件夹中分别创建数据库常量配置文件db.properties、Spring配置文件applicationContext.xml,以及MyBatis的配置文件mybatis-config.xml。这三个配置文件的实现代码如文件1、文件2和文件3所示。
文件1 db.properties
1 jdbc.driver=com.mysql.jdbc.Driver
2 jdbc.url=jdbc:mysql://localhost:3306/mybatis
3 jdbc.username=root
4 jdbc.password=root
5 jdbc.maxTotal=30
6 jdbc.maxIdle=10
7 jdbc.initialSize=5
文件2 applicationContext.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <beans xmlns="http://www.springframework.org/schema/beans"
3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4 xmlns:aop="http://www.springframework.org/schema/aop"
5 xmlns:tx="http://www.springframework.org/schema/tx"
6 xmlns:context="http://www.springframework.org/schema/context"
7 xsi:schemaLocation="http://www.springframework.org/schema/beans
8 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
9 http://www.springframework.org/schema/tx
10 http://www.springframework.org/schema/tx/spring-tx-4.3.xsd
11 http://www.springframework.org/schema/context
12 http://www.springframework.org/schema/context/spring-context-4.3.xsd
13 http://www.springframework.org/schema/aop
14 http://www.springframework.org/schema/aop/spring-aop-4.3.xsd">
15 <!-- 读取db.properties -->
16 <context:property-placeholder location="classpath:db.properties"/>
17 <!-- 配置数据源 -->
18 <bean id="dataSource"
19 class="org.apache.commons.dbcp2.BasicDataSource">
20 <!--数据库驱动 -->
21 <property name="driverClassName" value="${jdbc.driver}" />
22 <!--连接数据库的url -->
23 <property name="url" value="${jdbc.url}" />
24 <!--连接数据库的用户名 -->
25 <property name="username" value="${jdbc.username}" />
26 <!--连接数据库的密码 -->
27 <property name="password" value="${jdbc.password}" />
28 <!--最大连接数 -->
29 <property name="maxTotal" value="${jdbc.maxTotal}" />
30 <!--最大空闲连接 -->
31 <property name="maxIdle" value="${jdbc.maxIdle}" />
32 <!--初始化连接数 -->
33 <property name="initialSize" value="${jdbc.initialSize}" />
34 </bean>
35 <!-- 事务管理器,依赖于数据源 -->
36 <bean id="transactionManager" class=
37 "org.springframework.jdbc.datasource.DataSourceTransactionManager">
38 <property name="dataSource" ref="dataSource" />
39 </bean>
40 <!-- 开启事务注解 -->
41 <tx:annotation-driven transaction-manager="transactionManager"/>
42 <!-- 配置MyBatis工厂SqlSessionFactory -->
43 <bean id="sqlSessionFactory"
44 class="org.mybatis.spring.SqlSessionFactoryBean">
45 <!--注入数据源 -->
46 <property name="dataSource" ref="dataSource" />
47 <!--指定核MyBatis心配置文件位置 -->
48 <property name="configLocation" value="classpath:mybatis-config.xml" />
49 </bean>
50 <!-- 配置mapper扫描器 -->
51 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
52 <property name="basePackage" value="com.itheima.dao"/>
53 </bean>
54 <!-- 扫描Service -->
55 <context:component-scan base-package="com.itheima.service" />
56 </beans>
在文件2中,首先定义了读取db.properties文件的配置和数据源配置,然后配置了事务管理器并开启了事务注解。接下来配置了用于整合MyBatis框架的MyBatis工厂信息,最后定义了mapper扫描器来扫描DAO层,以及扫描Service层的配置。
小提示:
在实际开发时,为了避免Spring配置文件中的信息过于臃肿,通常会将Spring配置文件中的信息按照不同的功能分散在多个配置文件中。例如可以将事务配置放置在名称为applicationContext-transaction.xml的文件中,将数据源等信息放置在名称为applicationContext-db.xml的文件中等。这样,在web.xml中配置加载Spring文件信息时,只需通过applicationContext-*.xml的方式即可自动加载全部配置文件。
文件3 mybatis-config.xml
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
3 "http://mybatis.org/dtd/mybatis-3-config.dtd">
4 <configuration>
5 <!-- 别名定义 -->
6 <typeAliases>
7 <package name="com.itheima.po" />
8 </typeAliases>
9 </configuration>
由于在Spring中已经配置了数据源信息以及mapper接口文件扫描器,所以在MyBatis的配置文件中只需要根据POJO类路径进行别名配置即可。
(3)在config文件夹中,创建Spring MVC的配置文件springmvc-config.xml,编辑后如文件4所示。
文件4 springmvc-config.xml
1 <beans xmlns="http://www.springframework.org/schema/beans"
2 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns:mvc="http://www.springframework.org/schema/mvc"
4 xmlns:context="http://www.springframework.org/schema/context"
5 xmlns:tx="http://www.springframework.org/schema/tx"
6 xsi:schemaLocation="http://www.springframework.org/schema/beans
7 http://www.springframework.org/schema/beans/spring-beans-4.3.xsd
8 http://www.springframework.org/schema/mvc
9 http://www.springframework.org/schema/mvc/spring-mvc-4.3.xsd
10 http://www.springframework.org/schema/context
11 http://www.springframework.org/schema/context/spring-context-4.3.xsd">
12 <!-- 配置包扫描器,扫描@Controller注解的类 -->
13 <context:component-scan base-package="com.itheima.controller" />
14 <!-- 加载注解驱动 -->
15 <mvc:annotation-driven />
16 <!-- 配置视图解析器 -->
17 <bean class=
18 "org.springframework.web.servlet.view.InternalResourceViewResolver">
19 <property name="prefix" value="/WEB-INF/jsp/" />
20 <property name="suffix" value=".jsp" />
21 </bean>
22 </beans>
在文件4中,主要配置了用于扫描@Controller注解的包扫描器、注解驱动器以及视图解析器。
(4)在web.xml中,配置Spring的文件监听器、编码过滤器以及Spring MVC的前端控制器等信息,如文件5所示。
文件5 web.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2 <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
3 xmlns="http://xmlns.jcp.org/xml/ns/javaee"
4 xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
5 http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
6 id="WebApp_ID" version="3.1">
7 <!-- 配置加载Spring文件的监听器-->
8 <context-param>
9 <param-name>contextConfigLocation</param-name>
10 <param-value>classpath:applicationContext.xml</param-value>
11 </context-param>
12 <listener>
13 <listener-class>
14 org.springframework.web.context.ContextLoaderListener
15 </listener-class>
16 </listener>
17 <!-- 编码过滤器 -->
18 <filter>
19 <filter-name>encoding</filter-name>
20 <filter-class>
21 org.springframework.web.filter.CharacterEncodingFilter
22 </filter-class>
23 <init-param>
24 <param-name>encoding</param-name>
25 <param-value>UTF-8</param-value>
26 </init-param>
27 </filter>
28 <filter-mapping>
29 <filter-name>encoding</filter-name>
30 <url-pattern>*.action</url-pattern>
31 </filter-mapping>
32 <!-- 配置Spring MVC前端核心控制器 -->
33 <servlet>
34 <servlet-name>springmvc</servlet-name>
35 <servlet-class>
36 org.springframework.web.servlet.DispatcherServlet
37 </servlet-class>
38 <init-param>
39 <param-name>contextConfigLocation</param-name>
40 <param-value>classpath:springmvc-config.xml</param-value>
41 </init-param>
42 <!-- 配置服务器启动后立即加载Spring MVC配置文件 -->
43 <load-on-startup>1</load-on-startup>
44 </servlet>
45 <servlet-mapping>
46 <servlet-name>springmvc</servlet-name>
47 <!--/:拦截所有请求(除了jsp)-->
48 <url-pattern>/</url-pattern>
49 </servlet-mapping>
50 </web-app>