`
kkcheng
  • 浏览: 41052 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类

mvc annotation

 
阅读更多
在Spring3.0中

在Spring3.0.5这个版本上,<mvc:annotation-driven/>声明是没有 defaultAnnotationHandlerMapping这个属性的,对于@ResultMapping标签的解析,是写死了必须用 "org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping” 这个类来处理的。

在Spring 2.5中

那么Spring是如何解析<mvc:annotation-driven/>标签的呢?

首先,必须要有一个继承自“org.springframework.beans.factory.xml.NamespaceHandlerSupport”的类,在其init方法中,注册自己的解析器,注册mvc解析器的类为MvcNamespaceHandler。一般针对每个元素,都有一个解析器,比如:针对annotation-driven,就有一个解析器:AnnotationDrivenBeanDefinitionParser。

解析器必须实现org.springframework.beans.factory.xml.BeanDefinitionParser接口,这个接口只有一个parse方法,它有两个参数,第一个参数org.w3c.dom.Element就是我们在xml文件中声明的<mvc:annotation-driven/>结点,拿到这个结点信息,就可以开始具体的业务了。

Spring怎么知道处理mvc开头的标签就调用MvcNamespaceHandler中注册的解析器呢?

需要有一个"mvc”<–>MvcNamespaceHandler这样一个映射关系,那么这个映射关系在哪里呢?就在META-INF目录下的spring.handlers:源文件中的内容:

http\://www.springframework.org/schema/mvc=
org.springframework.web.servlet.config.MvcNamespaceHandler

这里定义了只要是http\://www.springframework.org/schema/mvc命名空间的标签,就使用org.springframework.web.servlet.config.MvcNamespaceHandler中的解析器。

头文件里说的http://www.springframework.org/schema/mvc/spring-mvc-3.0.xsd,并不是真的到网上去下载这个文件,在spring.schemas文件中,定义了它指向org/springframework/web/servlet/config/spring-mvc-3.0.xsd这个文件(在jar包里)。

所以,在Spring中,想使用自己的命名空间:

1、首先需要一个xsd文件,来描述自定义元素的命名规则,并在再Spring的配置文件的<benas>头中引用它。

2、然后需要实现一个BeanDefinitionParser接口,在接口的parse方法中,解析将来在Spring配置文件中出现的元素。(如果xsd声明可以有多个元素,需呀实现多个BeanDefinitionParser接口)

3、最后需要继承一个NamespaceHandlerSupport类,在它的init方法中,调用registerBeanDefinitionParser方法,将待解析的xml元素与解析器绑定。

4、在META-INF目录下,创建spring.schemas、spring.handlers文件,建立最高级的映射关系以便Spring进行处理。
分享到:
评论

相关推荐

    Spring MVC Annotation验证的方法

    Spring MVC Annotation验证方法 Spring MVC 框架提供了多种验证方法,其中一种常用的方式是使用Annotation验证。本文将详细介绍 Spring MVC Annotation验证的方法,包括使用 Spring MVC 自带的 Annotation 验证和...

    拦截器与冲突解决

    - **排除默认拦截器**:如果`&lt;mvc:annotation-driven /&gt;`包含默认拦截器,可以考虑使用`&lt;mvc:default-servlet-handler&gt;`或`&lt;mvc:annotation-driven enable-matrix-variables="false" /&gt;`来禁用它们。 - **调整拦截器...

    SpringMVC源码总结(二)mvc:mvc:annotation-driven背后的那些事

    在Spring MVC框架中,`mvc:annotation-driven`是Spring MVC配置中的一个重要元素,它使得我们的应用能够支持基于注解的控制器、数据绑定、格式化转换器和服务端验证等功能。这篇博客将深入探讨`mvc:annotation-...

    SpringMVC源码总结(三)mvc:annotation-driven和mvc:message-converters简单介绍

    在Spring MVC框架中,`mvc:annotation-driven`和`mvc:message-converters`是两个非常重要的元素,它们在处理基于注解的控制器和数据转换方面起着关键作用。本篇文章将深入探讨这两个组件的工作原理以及如何在实际...

    SpringMVC-Annotation

    在传统的SpringMVC中,我们需要在XML配置文件中声明DispatcherServlet、视图解析器、模型-视图-控制器(MVC)组件等。但在现代Spring项目中,我们倾向于使用注解来减少XML配置。例如,`@Controller`用于标记一个类...

    SpringMVC-annotation

    在"SpringMVC-annotation"这个主题中,我们将深入探讨如何利用注解来实现SpringMVC的配置,从而极大地减少XML配置文件的工作量。 在传统的SpringMVC应用中,我们需要在`web.xml`中配置DispatcherServlet,并在...

    Spring mvc demo

    "Spring mvc annotation" 指的是 Spring MVC 中广泛使用的注解,这些注解允许我们以声明式的方式配置应用程序,减少了 XML 配置文件的使用。主要的注解包括: - `@Controller`:标记一个类作为 MVC 控制器,处理...

    spring mvc_09

    在"spring mvc annotation interceptor"这个主题中,我们将深入探讨如何利用注解来配置和实现Spring MVC的拦截器。 1. **注解驱动的Spring MVC** - `@Controller`: 这个注解标记一个类为处理HTTP请求的控制器。它...

    Spring MVC internationalization annotation example

    Spring MVC internationalization annotation example 这个是annotation 方式的国际化 访问http://localhost:8080/login.htm

    如果面试问你Spring MVC的原理

    11. **MVC Annotation-driven**:Spring MVC提供了注解驱动的功能,使得开发者可以使用注解来简化配置,如`@RequestParam`、`@PathVariable`等。 12. **RESTful**:Spring MVC支持RESTful风格的Web服务,通过HTTP...

    (代码)SpringMVC第12讲:<mvc:annotation-driven/>

    首先,`&lt;mvc:annotation-driven/&gt;`的作用是自动配置Spring MVC,启用对处理方法注解的支持,如`@RequestMapping`、`@RequestParam`、`@ModelAttribute`等。通过这个元素,我们可以避免编写大量的XML配置,转而采用...

    基于Java的MVC架构Annotation注解实现源码分析

    该项目的核心是基于Java语言实现的MVC架构,采用Annotation注解技术进行实现。项目源码由69个文件组成,涵盖24个类文件、23个Java源文件、7个JSP页面文件、3个XML配置文件以及少量其他类型文件。该项目是jeecg第16期...

    Spring MVC 2.5 annotation 学习

    博文链接:https://pesome.iteye.com/blog/236273

    基于Annotation的MVC框架SSH示例.rar

    在这个"基于Annotation的MVC框架SSH示例"中,我们将探讨如何使用注解(Annotation)来简化SSH框架的配置和实现。 1. **Spring框架**:Spring是核心容器,负责管理应用对象的生命周期和依赖注入。在传统的Spring配置...

    Annotation Based Spring MVC Basics

    在本文中,我们将深入探讨基于注解的Spring MVC基础知识,这是一种流行且强大的Java Web开发框架。首先,我们假设读者对基本的Web应用程序结构和配置文件有一定的了解,以及对Servlets有基本的认识。接下来,我们将...

    Spring4 MVC Hibernate4集成(Annotation)

    Spring4 MVC Hibernate4集成,使用Annotation,封装dao层和service层。 环境: spring 4.0.3.RELEASE hibernate 4.3.5.Final mysql 5.1.29

    Spring mvc Aop+annotation实现系统日志记录功能实现的jar包

    Spring mvc Aop+annotation实现系统日志记录功能实现的jar包asm-3.3.jar ,aspectjrt.jar , aspectjweaver.jar , cglib-nodep-2.1_3.jar , spring-aop.jar

    Spring MVC + Hibernate +Annotation

    Spring MVC和Hibernate是Java开发中两个非常重要的框架,它们分别负责Web应用的模型-视图-控制器(MVC)架构和对象关系映射(ORM)。本教程将详细讲解如何将这两个框架结合使用,并通过注解简化配置过程。 首先,...

    Spring MVC 学习笔记 七 controller中其他可用的annotation

    这篇"Spring MVC 学习笔记 七 controller中其他可用的annotation"可能涵盖了除我们常见的`@RequestMapping`之外的其他注解,这些注解使得控制器功能更加丰富和灵活。下面将详细探讨Spring MVC中Controller相关的注解...

    Spring mvc结果跳转方法详解

    Spring MVC 结果跳转方法有多种实现方式,包括使用 ModelAndView 对象、Servlet API 和 Spring MVC annotation。每种方法都有其特点和应用场景,开发者可以根据实际情况选择合适的方法来实现结果跳转。

Global site tag (gtag.js) - Google Analytics