【搞定Spring】 视频课3-Spring开发Web项目 及 拆分Spring配置文件

Java程序在main里new ClassPathXmlApplicationContext

1.Spring开发Web项目 及 拆分Spring配置文件


a.Spring开发Web项目【因为web容器没有main入口,你也不知道会先使用哪个方法,你如果用一次,就new ClassPathXmlApplicationContext一次,肯定很不合适】


   Web项目如何初始化SpringIOC容器 :思路:当服务启动时(tomcat),通过监听器将SpringIOC容器初始化一次(该监听器 spring-web.jar已经提供)
   因此用spring开发web项目 至少需要7个jar: spring-java的6个jar + spring-web.jar,注意:web项目的jar包 是存入到WEB-INF/lib中

web项目启动时 ,会自动加载web.xml,因此需要在web.xml中加载 监听器(ioc容器初始化)。

Web项目启动时,启动实例化Ioc容器:
 <!-- 指定 Ioc容器(applicationContext.xml)的位置-->
  <context-param>
          <!--  监听器的父类ContextLoader中有一个属性contextConfigLocation,该属性值 保存着 容器配置文件applicationContext.xml的位置 -->
          <param-name>contextConfigLocation</param-name>
          <param-value>classpath:applicationContext.xml</param-value>
  </context-param>  
  <listener>
      <!-- 配置spring-web.jar提供的监听器,此监听器 可以在服务器启动时 初始化Ioc容器。
          初始化Ioc容器(applicationContext.xml) ,
              1.告诉监听器 此容器的位置:context-param
              2.默认约定的位置    :WEB-INF/applicationContext.xml
       -->
      <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
  </listener>

  <listener>
  <!-- 配置spring-web。jar提供的监听器,此监听器可以在服务器启动时初始化IOC容器。
  初始化IOC容器(applicationContext.xml),必须告诉监听器此容器的位置:context-param -->
  <listener-class>org.springframework.web.context.ContextLoaderListener.class</listener-class>
  </listener>


b.拆分Spring配置文件


    java项目:
        applicationContext1.xml
        applicationContext2.xml
        applicationContext3.xml

ApplicationContext conext = new ClassPathXmlApplicationContext("applicationContext3.xml") ;

    Web项目:
        根据什么拆分?
        i.三层结构   
            UI(html/css/jsp  、Servlet)  applicationController.xml
            Service :applicationService.xml
            Dao:applicationDao.xml
            公共 数据库:applicationDB.xml

        ii.功能结构
            学生相关配置 applicationContextStudent.xml   <bean id=""  class="X...Student">
            班级相关配置 applicationContextClass.xml 

        合并:如何将多个配置文件 加载
            (1)
          <context-param>
          <!--  监听器的父类ContextLoader中有一个属性contextConfigLocation,该属性值 保存着 容器配置文件applicationContext.xml的位置 -->
  <param-name>contextConfigLocation</param-name>
          <param-value>
              classpath:applicationContext.xml,
              classpath:applicationContext-Dao.xml,
              classpath:applicationContext-Service.xml,
              classpath:applicationContext-Controller.xml
          </param-value>
  </context-param>

扫描二维码关注公众号,回复: 6233709 查看本文章


        (2)推荐
  <context-param>
          <!--  监听器的父类ContextLoader中有一个属性contextConfigLocation,该属性值 保存着 容器配置文件applicationContext.xml的位置 -->
          <param-name>contextConfigLocation</param-name>
          <param-value>
              classpath:applicationContext.xml,
              classpath:applicationContext-*.xml
          </param-value>
  </context-param>

        (3)只在web.xml中加载主配置文件,
        <param-value>
              classpath:applicationContext.xml
          
          </param-value>
        然后在主配置文件中加中,加载其他配置文件
            <import resource="applicationContext-*.xml"/>
        

    Web项目:


2.Spring整合MyBatis

Spring - MyBatis 

思路:
    SqlSessionFactory -> SqlSession ->StudentMapper ->CRUD
可以发现 ,MyBatis最终是通过SqlSessionFactory来操作数据库,
Spring整合MyBatis 其实就是 将MyBatis的SqlSessionFactory 交给Spring

SM整合步骤:
1.jar
mybatis-spring.jar    spring-tx.jar    spring-jdbc.jar        spring-expression.jar
spring-context-support.jar    spring-core.jar        spring-context.jar
spring-beans.jar    spring-aop.jar    spring-web.jar    commons-logging.jar
commons-dbcp.jar    ojdbc.jar    mybatis.jar    log4j.jar    commons-pool.jar

2.类-表


3.MyBatis配置文件conf.xml

4.通过mapper.xml将 类、表建立映射关系


5.
之前使用MyBatis:    conf.xml ->SqlSessionFacotry 

现在整合的时候,需要通过Spring管理SqlSessionFacotry ,因此 产生qlSessionFacotry 所需要的数据库信息 不在放入conf.xml  而需要放入spring配置文件中


配置Spring配置文件(applicationContext.xml)


6.使用Spring-MyBatis整合产物开发程序
    目标:通过spring产生mybatis最终操作需要的 动态mapper对象(StudentMapper对象)
    Spring产生 动态mapper对象 有3种方法:
    


a.第一种方式
DAO层实现类  继承 SqlSessionDaoSupport类
        
         SqlSessionDaoSupport类提供了一个属性 SqlSession


b.第二种方式
    就是省略掉 第一种方式的 实现类
    直接MyBatis提供的 Mapper实现类:org.mybatis.spring.mapper.MapperFactoryBean 
    缺点:每个mapper都需要一个配置一次

c.第三种方式
    
    批量配置 实现类

猜你喜欢

转载自blog.csdn.net/ZHAOJING1234567/article/details/90200743