Spring Web

一、Spring开发Web项目
SpringIoC容器初始化:将IoC容器中的所有bean实例化为对象(new对象);将各个bean依赖的属性值注入进去(属性赋值)。
在Java程序中初始化IoC容器:ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml");
JavaWeb程序初始化IoC容器《Web项目如何初始化IoC容器》:
注意:Web项目的jar包,要存放到WEB-INF/lib中
思路:当服务启动时(Tomcat),通过监听器将SpringIoC容器初始化一次(该监听器 spring-web.jar已经提供);


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


Web项目启动时,启动实例化IoC容器:


<listener>
  <!-- 配置spring-web.jar提供的监听器,此监听器可以在服务器启动时,初始化IoC容器。
  初始化IoC容器(ApplicationContext.xml):
    方法1========必须告诉监听器此IoC容器的位置: context-param
    方法2=======默认约定的位置:WEN-INF下;而且文件必须为ApplicationContext.xml(WEN-INF/ApplicationContext.xml)
  -->
  <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

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

二、拆分Spring配置文件
《1》Java项目:

《2》Web项目:
*根据什么拆分?
  1.三层结构
    UI(html/css/jsp、Servlet):applicationController.xml
    Service:applicationService.xml
    DAO:applicationDao.xml
    公共数据库:applicationDB.xml
2.功能结构(功能、模块拆分)

*拆分之后怎么合并:(如何将多个配置文件加载)
  (方法1)
  web.xml中配置:
    <context-param>
      <param-name></param-name>
      <param-value>
        classpath:applicationContext.xml
        classpath:applicationContext-Controller.xml
        classpath:applicationContext-Service.xml
        classpath:applicationContext-Dao.xml
        classpath:applicationContext-DB.xml
      </param-value>
    </context-param>

  (方法2)推荐
  web.xml中配置:
    <context-param>
      <param-name></param-name>
      <param-value>
        classpath:applicationContext.xml
        <!-- 使用*通配符 -->
        classpath:applicationContext-*.xml
      </param-value>
    </context-param>

  (方法3)
  i.web.xml中配置一个主配置文件,然后在主配置文件中导入其他配置文件:
  <context-param>
    <param-name></param-name>
    <param-value>
      classpath:applicationContext.xml
    </param-value>
  </context-param>

  ii.在applicationContext.xml中配置:
    <import resource="applicationContext-Controller.xml" />
    <import resource="applicationContext-Service.xml" />
    <import resource="applicationContext-Dao.xml" />
    <import resource="applicationContext-DB.xml" />
  以上代码可以简化:
    <import resource="applicationContext-*.xml" />


注意:
  bean的实例化、DI注入是保存在Spring IoC容器中;
  但是每一次request请求是请求Servlet容器。
  故,必须把Spring IoC容器和Servlet容器联系在一起。
  在init(){.....}获取Spring IoC容器中的bean对象。

猜你喜欢

转载自www.cnblogs.com/22428-bin/p/10662133.html
今日推荐