zoukankan      html  css  js  c++  java
  • Spring 与 SpringMVC 容器父子关系引出的相应问题

    1)关系说明

    spring 与 springmvc 父子关系:spring (父容器),springmvc (子容器)

    springmvc(子)--- 可调用 --> spring(父) 中的 bean,属性值等
    但 spring(父)-- 不可调用 --> springmvc(子) 中的 bean,属性值等

    2)配置原则

    spring-context.xml
    <!-- 启动组件扫描,排除@Controller的组件,因为控制器组件由SpringMVC配置文件扫描 -->
    <context:component-scan base-package="com.***.***">
       <context:exclude-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    springmvc.xml
    <!-- 自动扫描该包,使SpringMVC认为包下用了@controller注解的类是控制器,要有use-default-filters="false" -->
    <context:component-scan base-package="com.***.***.controller" >
       <context:include-filter type="annotation" expression="org.springframework.stereotype.Controller"/>
    </context:component-scan>

    success:
    url --> servlet --> springmvc(访问 controller,所以 controller 必须放到springmvc容器)
    springmvc --> spring(controller 调用 service,dao)

    error:
    把 controller 放到 spring 容器,不放到 springmvc 出现的问题:
    url --> servlet --> springmvc(spring 会将扫描的对象都会存放到 spring 的容器,而不会放到 springmvc 子容器中,当访问项目的时候,springmvc 通过处理器映射器找不到和其对应的 Controller,报 404 错误! )

    spring 容器不扫描,全部放到 springmvc 中扫描出现的问题: 
    在里面可以同时扫描 controller层、service层、dao层 的注解,但是,子容器controller 进行扫描装配时装配了 @Service注解 的实例,而该实例理应由父容器进行初始化以保证事务的增强处理(因为事务管理器是配置在 spring 容器中的),所以此时得到的将是原样的 Service(没有经过事务加强处理,没有事务处理能力,无法访问到事务对象,导致事务失效)

    @Value("${name}") 取不到 properties 文件中定义的变量值
    <!-- 配置文件引入 -->
    <context:property-placeholder location="classpath:application.properties" 
                           ignore-resource-not-found="true" ignore-unresolvable="true" />
    service,dao 中不能 @Value 配置在 springmvc.xml 的properties (父容器 -- 不能访问 --> 子容器 的东西)
  • 相关阅读:
    exFAT移动硬盘写保护怎么去掉
    ORACLE:一列的多行数据拼成字符串
    cxgrid中,如何根据列名或字段名取得footer值
    Delphi天气预报查询
    Delphi ListView基本用法大全
    datasnap的初步
    Delphi ListView基本用法大全
    Delphi实现树型结构
    获取身份证号码信息
    让Delphi XE5跟其他版本的Delphi共存
  • 原文地址:https://www.cnblogs.com/molashaonian/p/8763345.html
Copyright © 2011-2022 走看看