zoukankan      html  css  js  c++  java
  • SpringMVC系列(十五)Spring MVC与Spring整合时实例被创建两次的解决方案以及Spring 的 IOC 容器和 SpringMVC 的 IOC 容器的关系

    一、Spring MVC与Spring整合时实例被创建两次的解决方案

    1.问题产生的原因

    Spring MVC的配置文件和Spring的配置文件里面都使用了扫描注解<context:component-scan base-package="com.study.springmvc" />

    2.解决方案

    2.1. 使 Spring 的 IOC 容器扫描的包和 SpringMVC 的 IOC 容器扫描的包没有重合的部分,把Handler和service/DAO放在不同的包下
    2.2. 使用 exclude-filter 和 include-filter 子节点来规定只能扫描的注解

    springmvc.xml的配置,限制只扫描Handle的注解@Controller和异常处理的注解@ControllerAdvice

    1 <context:component-scan base-package="com.study.springmvc" use-default-filters="false">
    2         <context:include-filter type="annotation" 
    3             expression="org.springframework.stereotype.Controller"/>
    4         <context:include-filter type="annotation" 
    5             expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
    6 </context:component-scan>

     spring的配置,限制不扫描Handle的注解@Controller和异常处理的注解@ControllerAdvice

    1 <context:component-scan base-package="com.study.springmvc">
    2         <context:exclude-filter type="annotation" 
    3             expression="org.springframework.stereotype.Controller"/>
    4         <context:exclude-filter type="annotation" 
    5             expression="org.springframework.web.bind.annotation.ControllerAdvice"/>
    6 </context:component-scan>

    二、Spring 的 IOC 容器和 SpringMVC 的 IOC 容器的关系

    SpringMVC 的 IOC 容器中的 bean 可以来引用 Spring IOC 容器中的 bean,反之不行,原因是:

    1.Spring MVC是Spring的子类,子类可以引用父类,父类不能引用子类

    2. 从软件层面上来说,Spring MVC是展示层可以调用业务层,业务层不能调用展示层

  • 相关阅读:
    获取网页数据
    追踪公式引用的单元格
    loadRunner函数之lr_set_debug_message
    Python爬虫之抓取豆瓣影评数据
    Python爬虫之抓图
    loadRunner函数之web_add_header
    JVM是如何处理异常的
    1. JVM内存区块
    JVM-JVM是如何执行方法调用的
    JVM-内部类分析
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7860707.html
Copyright © 2011-2022 走看看