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是展示层可以调用业务层,业务层不能调用展示层

  • 相关阅读:
    android 圆角图片的实现
    navigationView 的使用和布局文件的绑定
    android listview 的监听事件
    android第三方框架 xlistview 的使用
    android Baseadapter 和 ViewHolder的使用
    android 调用电话功能
    android 颜色对照
    Android_menu_SubMenu
    Android_menu_optionMenu
    Android_Menu_contextMenu
  • 原文地址:https://www.cnblogs.com/leeSmall/p/7860707.html
Copyright © 2011-2022 走看看