SSM整合文档

SSM整合文档 v2

一. 文件说明

文件名 描述
spring-servlet.xml 配置SpringMvc框架相关
applicationContext.xml 配置Spring容器
spring-mybatis.xml 引入并整合mybatis

二.引入Jar包

包名称 描述
spring-web 是webmvc的依赖包,提供很多Servlet的实现
junit 测试包
spring-webmvc Spring提供的MVC , 比较重要的一部分
spring-tx spring 的事务管理器
spring-jdbc spring 对jdbc的封装包
aspectjweaver 切面支持
mybatis mybatis框架
mybatis-spring mybatis和spring整合
jstl jsp的一种表达式
mysql-connector-java mysql连接数据库驱动
log4j 日志包
slf4j-api 日志包,对于log4j的封装
c3p0 数据连接池
junit 单元测试
spring-text 对Junit等测试框架的简单封装

包只有一部分解释,自学者不要带包上面浪费时间

三. 配置步骤

1. web.xml

项目配置从无到有,从外到内

1.1 编码过滤器CharacterEncodingFilder
<display-name>Archetype Created Web Application</display-
<!--配置请求过滤器,设置编码过滤器-->
<filter>
    <filter-name>encodingFilter</filter-name>
    <filter-class>org.springframework.web.filter.Characte
 
    <!--设置默认编码格式-->
    <init-param>
        <param-name>encoding</param-name>
        <param-value>utf-8</param-value>
    </init-param>
 
    <!--强制将请求编码格式转为encoding,无论它原本是不是encoding的格式-->
    <init-param>
        <param-name>forceEncoding</param-name>
        <param-value>true</param-value>
    </init-param>
 
</filter>
 
<filter-mapping>
    <filter-name>encodingFilter</filter-name>
    <url-pattern>*.do</url-pattern>
</filter-mapping>
1.2 Mvc核心控制器DispatcherServlet
<!--配置SpringMvc的核心控制器-->
<servlet>
    <servlet-name>dispatcherServlet</servlet-name>
    <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
 
    <!--指定spring-mvc的配置文件-->
    <init-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>
            classpath:spring/需要一个专门配置mvc的配置文件,该配置文件存放初始DispatcherServlet            的信息参数
        </param-value>
    </init-param>
    <!--加载级别-->
    <load-on-startup>1</load-on-startup>
</servlet>
 
<servlet-mapping>
    <servlet-name>dispatcherServlet</servlet-name>
    <url-pattern>*.do</url-pattern>
</servlet-mapping>

这个地方url-pattern 表示拦截的请求获取,*.do表明获取所有,do结尾的请求,这些请求被拦截进入DispatcherServlet中

1.3 初始化Spring容器 配置监听ContextLoaderListener
  • 引入配置Spring配置文件路径
<!--配置Spring监听器-->
<context-param>
    <param-name>contextConfigLocation</param-name>
    <param-value>classpath:spring/spring-*.xml</param-value>
</context-param>
 
 
<listener>
    <listener-class>
        org.springframework.web.context.ContextLoaderListener
    </listener-class>
</listener>

2.applicationContext.xml

该配置文件用于初始化Sprng容器

2.1扫描service层,用于处理业务,装配业务bean
<context:component-scan base-package="com.lh.service.impl"/>
2.2配置全局数据源

Spring容器中配置数据源

<context:property-placeholder location="classpath:jdbc.properties"/>
 
<bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">
    <property name="driverClassName" value="${jdbc.driverClass}"/>
    <property name="url" value="${jdbc.jdbcUrl}"/>
    <property name="username" value="${jdbc.username}"/>
    <property name="password" value="${jdbc.password}"/>
</bean>

3. spring-mybatis.xml 整合

3.1 将mybatis的SqlSessionFactory交给Spring管理
    <!--SqlSessionFactory交给Spring-->
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="druidDataSource"/>
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
        <property name="typeAliasesPackage" value="com.lh.entity"/>
        <property name="mapperLocations" value="classpath:mybatis/mapper/**/*.xml"/>
    </bean>
  • datasource 数据源,引用先前在Spring中配置好的
  • configLocation 配置文件,有一些配置没有完全从mybatis中移植过来,所以需要将那些没有整合到spring中的配置信息通过mybatis-config.xml引入到spring中
3.2 将 做映射,将Java接口代码交给Spring,Spring去做映射
<!--把mapper接口交给spring管理-->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer" >
        <property name="basePackage" value="com.lh.dao"/>
    </bean>

4.spring-servlet.xml 配置DispatcherServlet

4.1 配置扫描Action包
<context:component-scan base-package="com.lh.action"/>
4.2 配置 处理映射器,处理适配器,视图解析器
    <!--mvc视图解析器-->
    <mvc:annotation-driven/>
    <!--mvc注解驱动-->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/WEB-INF/jsp"/>
        <property name="suffix" value=".jsp"/>
    </bean>

这里视图解析器中的配置,表名Controller层默认请求的资源路径

4.3 静态资源释放器
<mvc:default-servlet-handler/>

只要请求符合在web.xml中配置的过滤选项,该请求就会进入DispatcherServlet中,设置资源释放器,DispatcherSevlet会分辨出 访问静态资源的请求,并寻找指定静态资源进行访问

5. 配置事务管理器

Spring事务笔记

三个大牛逼接口

5.1 配置事务管理器 PlatformTransactionManager
  • DataSourceTransactionManager是事务管理器的一个实现类

将数据源交给事务管理器,这样我们实际获取到的数据源是来自于事务管理器的

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
 
        <property name="dataSource" ref="druidDataSource"/>
 
  </bean>
5.2 配置事务通知

有的业务需要事务,有的业务不需要事务,但是数据来源都是走的事务管理器

为什么叫做通知呢, 通知是AOP里面的名词, 需要通过切面的方式去装饰那些需要事务管理的业务

<tx:advice transaction-manager="transactionManager" id="txadvice">
    <tx:attributes>
        <tx:method name="find*" read-only="true"/>
        <tx:method name="*"/>
    </tx:attributes>
</tx:advice>
5.3 切点通知增强

aop:config :表示定义一个切面

aop:pointcut : 定义一个切点, (也就是要被修饰, 增强的方法)

aop:advisor: 将指定的 增强方法 和 需要被增强的 方法 相关联

    <aop:config>
        <aop:pointcut id="pt" expression="execution(* com.lh.service.impl.*.*(..))"/>
        <!--将其诶单和通知增强关联-->
        <aop:advisor advice-ref="txadvice" pointcut-ref="pt"/>
    </aop:config>
 
posted @ 2018-12-06 22:10  觥筹啊觥筹  阅读(782)  评论(0编辑  收藏  举报