• SSM应用(六)--SSM集成


    整合分析

      首先,我们先来回顾一下Spring,SpringMVC,MyBatis这三个框架各自做了什么;

      Spring:用于实现bean的实例化和bean与bean之间的管理;

        在SSM集成中,将各层进行整合,管理MyBatis、Service、SpringMVC;

      SpringMVC:取代了servlet,用于分发请求给bean的实例;

        在SSM集成中,用于管理请求分发的bean;

      MyBatis:取代了JDBC,用于实现dao层,对数据进行操作;

        在SSM集成中,推荐使用代理模式,Spring会生成MyBatis接口中的代理实现类;

    整合步骤

      1、将每一层的类变成Spring中的实例;

      2、建立每一层中类的关系;

      

        工程目录结构:

      

      3、整合dao层:扫描mapper接口生成代理实现类的bean;

       (1)、将MyBatis的代理实现类变成Spring中的bean;

        会用到MapperScannerConfigurer类扫描包,将包中的接口和mapper映射文件关联起来生成代理对象;

       (2)、需要Spring管理SqlSessionFactory对象和DataSource对象

    <!-- 引入属性配置文件 -->
    <context:property-placeholder location="classpath:db.properties"/>
    
    <!-- 
        配置数据源:bean,Spring会通过配置文件将该对象实例化,Apache提供了dataSource支持类
        Spring可以实例化出DataSource数据源对象
     -->
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
        <property name="driverClassName" value="${driver}"></property>
        <property name="username" value="${username}"></property>
        <property name="password" value="${password}"></property>
        <property name="url" value="${url}"></property>
        <property name="maxActive" value="10"></property><!-- 最大连接数 -->
        <property name="maxIdle" value="5"></property><!-- 最大同时活跃数 -->
    </bean>
        
    <!-- 配置SqlSessionFactory:Spring提供的管理,提供了一个类 -->
    <bean id="sqlSessionFactory"  class="org.mybatis.spring.SqlSessionFactoryBean">
        <!-- 数据源的配置 -->
        <property name="dataSource" ref="dataSource"></property>
        <property name="configLocation" value="classpath:mybatis/SqlMapConfig.xml"></property>
    </bean>
        
    <!-- 使用包扫描的方式,将指定包下的接口都生成代理类,Spring和MyBatis整合包下所提供的一个类具备的功能 -->
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="dao"></property>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
    </bean>

      

      4、整合service层:扫描service包,将有注解的service实现类变成bean,实现事务控制;

       (1)、将service的实现类变成Spring中的bean;我们可以通过配置文件和注解的方式实现;

        基于配置文件配置bean

    <!-- 基于配置文件 -->
    <bean id="authorService" class="service.Impl.AuthorServiceImpl">
        <property name="authorDao" ref="authorDao"></property>
    </bean>

          在service层中,注意要实现dao层的get,set方法

    public class AuthorServiceImpl implements AuthorService {
    
        AuthorDao dao;
    
        public AuthorDao getDao() {
            return dao;
        }
    
        public void setDao(AuthorDao dao) {
            this.dao = dao;
        }
    }

        基于注解方式实现:

    <!-- 基于注解形式:配置要扫描哪个包 -->
    <context:annotation-config></context:annotation-config>
    <context:component-scan base-package="service"></context:component-scan>

          同样,要实现dao层的get,set方法;

    @Service("authorService")
    public class AuthorServiceImpl implements AuthorService {
        
        @Resource
        AuthorDao dao;
    
        public AuthorDao getDao() {
            return dao;
        }
    
        public void setDao(AuthorDao dao) {
            this.dao = dao;
        }
    }

      

      5、整合SpringMVC:本质就是一个Spring,自己是一个servlet的存在,将controller类变成它管理的实例;

       (1)、在web.xml文件中配置SpringMVC为一个servlet

    <servlet>
        <servlet-name>springMVC</servlet-name>
        <servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
        <init-param>
            <param-name>contextConfigLocation</param-name>
            <param-value>classpath:spring/springMVC.xml</param-value>
        </init-param>
    </servlet>
    <servlet-mapping>
        <servlet-name>springMVC</servlet-name>
        <url-pattern>*.action</url-pattern>
    </servlet-mapping> 

       (2)、配置SpringMVC的核心配置文件:controller的实例bean、视图解析的bean;

    <!-- 启用注解 -->
    <mvc:annotation-driven></mvc:annotation-driven>
    <!-- 要扫描的包: -->
    <context:component-scan base-package="controller"></context:component-scan>
         
    <!-- 视图解析 -->
    <bean class="org.springframework.web.servlet.view.InternalResourceViewResolver">
        <property name="prefix" value="/"></property>
        <property name="suffix" value=".jsp"></property>
    </bean>

      

      6、在这里,我们把核心配置文件按照层的关系分成了不同的配置文件,那么要怎么才能把他们关联起来。在程序运行时同时解读呢?

        所以我们就需要用到Spring提供的监听器了,将配置的所有bean和bean之间的关系管理起来

        我们需要在web.xml中配置监听器;

    <!-- 
        Spring提供了监听器:Tomcat启动的时候,就去读取Spring的配置文件,创建Spring上下文
        创建实例,建立实例之间的关系
    -->
    <context-param>
        <param-name>contextConfigLocation</param-name>
        <param-value>classpath:spring/applicationContext-*.xml</param-value>
    </context-param>
    <listener>
        <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
    </listener>

      SSM集成到此也就结束了,希望能对大家有所帮助;

    PS:因作者能力有限,如有误还请谅解;

  • 相关阅读:
    使页面左右无法滑动(手机端)
    git使用简易指南(转)
    sql2012笔记
    C#的应用
    细谈HTML解析模块
    poj2299解题报告(归并排序求逆序数)
    poj2388解题报告(排序)
    poj3080解题报告(暴力、最大公共子串)
    poj1068解题报告(模拟类)
    poj3295解题报告(构造、算术表达式运算)
  • 原文地址:https://www.cnblogs.com/WHL5/p/9013689.html
Copyright © 2020-2023  润新知