• 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>
     
    
  • 相关阅读:
    adb client, adb server, adbd原理浅析(附带我的操作过程)【转】
    ADB运行框架原理解析【转】
    android adb 源码框架分析(2 角色)【转】
    android adb 源码框架分析(1 系统)【转】
    ADB 源码分析(一) ——ADB模块简述【转】
    Awesome Adb——一份超全超详细的 ADB 用法大全【转】
    Android系统设置Android adb 开关的方法【转】
    [RK3288][Android6.0] 调试笔记 --- 测试I2C设备正常传输方法【转】
    [RK3399][Android7.1] 调试笔记 --- 模块编译32位动态库【转】
    Linux内核中工作队列的使用work_struct,delayed_work【转】
  • 原文地址:https://www.cnblogs.com/lyuweigh/p/10079957.html
Copyright © 2020-2023  润新知