ssm整合各配置文件详解
各个配置文件(总结版)
叫法
- springmvc框架中,handler和controller只是不同的叫法,本质是一样的,只是名字不一样。在实际编写中,都要加@controller注解,才能被spring知道是一个控制器,才能交给spring的ioc容器管理。
- spring配置文件有的叫做applicationContext.xml。applicationContext.xml是Spring的默认配置文件,当容器启动时找不到指定的配置文档时,将会尝试加载这个默认的配置文件。但是我们创建通常不会这样叫。
- mapper接口和DAO接口本质是一样的。叫法不同罢了。
spring-persist.xml
<?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:context="http://www.springframework.org/schema/context" xmlns:tx="http://www.springframework.org/schema/tx"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx.xsd">
<!--1. 配置自动扫描的包(service层)-->
<context:component-scan base-package="com.atguigu.ssm.service"/>
<!--2.加载外部属性配置文件(jdbc.properties)-->
<context:property-placeholder location="classpath:jdbc.properties"/>
<!-- 2.1配置数据源-->
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
<property name="username" value="${jdbc.user}"/>
<property name="password" value="${jdbc.password}"/>
<property name="url" value="${jdbc.url}"/>
<property name="driverClassName" value="${jdbc.driver}"/>
</bean>
<!--========================================mybatis整合==============================================================-->
<!--3.配置SqlsessionFactoryBean,整合mybatis-->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<!--3.1指定mybatis全局配置文件-->
<!-- 方法1:保留全局配置文件-----指定Mybatis全局配置文件-->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!--方法2:舍弃mybatis全局配置文件,这样写-->
<!-- <property name="configuration">-->
<!-- <bean class="org.apache.ibatis.session.Configuration">-->
<!-- <property name="mapUnderscoreToCamelCase" value="true"/>-->
<!-- </bean>-->
<!-- </property>-->
<!--方法2:舍弃mybatis全局配置文件,这样写-->
<!-- <property name="typeAliasesPackage" value="com.atguigu.ssm.entity"/>-->
<!-- 3.2 指定Mapper配置文件位置-->
<property name="mapperLocations" value="classpath:mappers/*Mapper.xml"/>
<!--3.3装配数据源(我们在上面配置的数据源)-->
<property name="dataSource" ref="druidDataSource"/>
</bean>
<!--方法1-->
<!--4. 使用mybatis-spring命名空间-->
<mybatis-spring:scan base-package="com.atguigu.ssm.mapper"/>
<!--方法2-->
<!--4.配置mapper接口(代理对象加入到ioc容器中)类型的bean的扫描器-->
<!-- <bean id="mapperScannerConfigurer" class="org.mybatis.spring.mapper.MapperScannerConfigurer">-->
<!-- <property name="basePackage" value="com.atguigu.ssm.mapper"/>-->
<!-- </bean>-->
<!--==================================mybatis整合==============================================================-->
<!--5.配置事务管理器-->
<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<!--5.1 装配数据源(要能管事务就要控制住数据源,数据源中连接,回滚等操作)-->
<property name="dataSource" ref="druidDataSource"/>
</bean>
<!--6.开启基于注解的声明式事务-->
<tx:annotation-driven transaction-manager="transactionManager"/>
</beans>
spring-persist.xml主要作用(主要配置和业务逻辑有关的,数据源,mybatis整合,事务控制)
- 配置自动扫描的包(service层)
- 加载外部属性配置文件(jdbc.properties)
2.1 配置数据源 - 配置SqlsessionFactoryBean(整合mybatis)
3.1指定mybatis全局配置文件
3.2 指定Mapper配置文件位置
3.3装配数据源(因为以往都是在mybatis中要配置的) - 配置扫描mapper接口
- 配置事务管理器
5.1 装配数据源 - 开启基于注解的声明式事务
mybatis-config.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>
<!--1.Mybatis全局配置,驼峰式命名-->
<!-- Mybatis全局配置 -->
<settings>
<!-- 将数据库表字段映射到驼峰式命名的Java实体类属性中 -->
<!-- 数据库表字段格式:单词_单词 -->
<!-- Java实体类属性:首字母小写的驼峰式命名 -->
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
<!--2.设置实体类别名(以包为单位),方便mapper.xml中resultType直接写类名-->
<!--指定实体类别名,设置之后mapper.xml文件中resultType就不用写包名,直接写类名即可-->
<typeAliases>
<package name="com.atguigu.ssm.entity"/>
</typeAliases>
</configuration>
mybatis-config.xml文件主要作用
- Mybatis全局配置,驼峰式命名
- 设置实体类别名(以包为单位),方便mapper.xml中resultType直接写类名
web.xml
web.xml文件为所有web应用程序启动加载的首个文件,所有框架的加载都需要在此配置。
<?``xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0">
<!--1.配置ContextLoaderListener,读取spring-persist.xml文件-->
<!--1.1 通过context-param 指定Spring框架的配置文件位置-->
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:spring-persist.xml</param-value>
</context-param>
<!--1.2 配置ContextLoaderListener 监听器-->
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<!--2.配置springmvc前端控制器dispatcherServlet,对浏览器发送的请求进行统一处理-->
<servlet>
<servlet-name>dispatcherServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<!-- 2.1 通过初始化参数init-param指定SpringMVC配置文件的位置和名称 -->
<init-param>
<!-- contextConfigLocation为固定值 -->
<param-name>contextConfigLocation</param-name>
<!-- 使用classpath:表示从类路径查找配置文件,例如maven工程中的src/main/resources -->
<param-value>classpath:spring-mvc.xml</param-value>
</init-param>
<!--2.2 将启动控制DispatcherServlet的初始化时间提前到服务器启动时-->
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dispatcherServlet</servlet-name>
<!--/不能匹配.jsp请求路径的请求-->
<url-pattern>/</url-pattern>
</servlet-mapping>
<!--3.配置过滤器CharacterEncodingFilter,设置字符编码-->
<filter>
<filter-name>characterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceRequestEncoding</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceResponseEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>characterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!--4.配置Rest风格的HiddenHttpMethodFilter,将post请求转换为put和Delete请求-->
<filter>
<filter-name>hiddenHttpMethodFilter</filter-name>
<filter-class>org.springframework.web.filter.HiddenHttpMethodFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>hiddenHttpMethodFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
</web-app>
web.xml配置文件主要作用
- 配置ContextLoaderListener,读取spring-persist.xml文件
1.1 通过context-param 指定Spring框架的配置文件位置
1.2 配置ContextLoaderListener 监听器 - 配置springmvc前端控制器dispatcherServlet,对浏览器发送的请求进行统一处理
2.1 通过初始化参数init-param指定SpringMVC配置文件的位置和名称
2.2 将启动控制DispatcherServlet的初始化时间提前到服务器启动时 - 配置过滤器CharacterEncodingFilter,设置字符编码
- 配置Rest风格的HiddenHttpMethodFilter,将post请求转换为put和Delete请求
spring-mvc.xml
<?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: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.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd "
>
<!--1.扫描组件,开启注解扫描,handler或者controller被扫描-->
<context:component-scan base-package="com.atguigu.ssm.handler"/>
<!--2.配置 Thymeleaf 的视图解析器,视图跳转 -->
<bean id="thymeleafViewResolver" class="org.thymeleaf.spring5.view.ThymeleafViewResolver">
<property name="order" value="1"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="templateEngine">
<bean class="org.thymeleaf.spring5.SpringTemplateEngine">
<property name="templateResolver">
<bean class="org.thymeleaf.spring5.templateresolver.SpringResourceTemplateResolver">
<property name="prefix" value="/WEB-INF/templates/"/>
<property name="suffix" value=".html"/>
<property name="characterEncoding" value="UTF-8"/>
<property name="templateMode" value="HTML5"/>
</bean>
</property>
</bean>
</property>
</bean>
<!--<!--配置默认视图解析器,注意:不用写-->-->
<!-- <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">-->
<!-- <property name="prefix" value="/WEB-INF/templates/"></property>-->
<!-- <property name="suffix" value=".jsp"></property>-->
<!-- </bean>-->
<!--3.配置视图控制器view-controller-->
<!-- 匹配请求路径直接前往视图,不经过 handler 方法 -->
<!--path:设置处理的请求地址,view-name:设置请求地址所对应的视图名称-->
<mvc:view-controller path="/" view-name="index"/>
<!-- 4.开放静态资源访问 -->
<mvc:default-servlet-handler/>
<!--5.注解驱动-->
<!--只要设置了视图控制器,就必须设置注解驱动,否则注解全部失效-->
<mvc:annotation-driven/>
</beans>
springmvc-config配置文件主要作用
- 扫描(controller)组件
- thymeleaf视图解析器
- 视图控制器view-controller
- 开放静态资源访问
- 注解驱动
总结
spring-persist.xml主要作用(主要配置和业务逻辑有关的,数据源,mybatis整合,事务控制)
- 配置自动扫描的包(service层)
- 加载外部属性配置文件(jdbc.properties)
2.1 配置数据源 - 配置SqlsessionFactoryBean(整合mybatis)
3.1指定mybatis全局配置文件
3.2 指定Mapper配置文件位置
3.3装配数据源(因为以往都是在mybatis中要配置的) - 配置扫描mapper接口
- 配置事务管理器
5.1 装配数据源 - 开启基于注解的声明式事务
mybatis-config.xml文件主要作用
- Mybatis全局配置,驼峰式命名
- 设置实体类别名(以包为单位),方便mapper.xml中resultType直接写类名
springmvc-config配置文件主要作用
- 扫描(controller)组件
- thymeleaf视图解析器
- 视图控制器view-controller
- 开放静态资源访问
- 注解驱动
web.xml配置文件主要作用
- 配置ContextLoaderListener,读取spring-persist.xml文件
1.1 通过context-param 指定Spring框架的配置文件位置
1.2 配置ContextLoaderListener 监听器 - 配置springmvc前端控制器dispatcherServlet,对浏览器发送的请求进行统一处理
2.1 通过初始化参数init-param指定SpringMVC配置文件的位置和名称
2.2 将启动控制DispatcherServlet的初始化时间提前到服务器启动时 - 配置过滤器CharacterEncodingFilter,设置字符编码
- 配置Rest风格的HiddenHttpMethodFilter,将post请求转换为put和Delete请求