springMVC配置介绍

springmvc 是spring下的一个模块

    Spring和springmvc和作为两个独立的容器,会把扫描到的注解对象分别放到两个不同的容器中,
    Springmvc容器是spring容器的一部分,他们访问对象的范围如下所示:
        1:Springmvc子容器可以访问spring父容器中的对象

        2:spring父容器不能访问springmvc子容器中的对象

一般这样配置springmvc容器:

    

2.在spring-mvc.xml配置文件中,需要<mvc:annotation-driven />,

这个方法是为我们默认注册2个bean:DefaultAnnotationHandlerMapping 和 AnnotationMethodHandlerAdapter ,分别为HandlerMapping的实现类和HandlerAdapter的实现类,从3.1.x版本开始对应实现类改为了RequestMappingHandlerMapping和RequestMappingHandlerAdapter。

HandlerMapping的实现类的作用
实现类RequestMappingHandlerMapping,它会处理@RequestMapping 注解,并将其注册到请求映射表中。

HandlerAdapter的实现类的作用
实现类RequestMappingHandlerAdapter,则是处理请求的适配器,确定调用哪个类的哪个方法,并且构造方法参数,返回值。
 

当配置了mvc:annotation-driven/后,Spring就知道了我们启用注解驱动。然后Spring通过context:component-scan/标签的配置,会自动为我们将扫描到的@Component,@Controller,@Service,@Repository等注解标记的组件注册到工厂中,来处理我们的请求。

3.如果我们将所有的bean都放入spring容器,而不会放到springmvc子容器中,当访问项目的时候,springmvc找不到处理器映射器,和其对应的Controller,进而报404错误!

4.不用spring容器,只用springmvc容器行不行呢?
答案:是可以的,在这个里面可以同时扫描Controller层、service层、dao层的注解。

5.在springmvc 和 spring 都有注解扫描的前提下,能不能将事务配置在Controller层?
答案:是不能的,因为事务管理器是配置在spring容器中的,如果将事务配置在Controller层的话,spring容器就访问不了springmvc子容器,进而无法访问到事务对象。进而导致事务失效。

猜你喜欢

转载自blog.csdn.net/lhanson/article/details/80953865