`
hahalq
  • 浏览: 14671 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Spring mvc注解配置的背后

 
阅读更多

在Spring3中已经可以用@Configuration标识一个类代替xml来配置bean容器,该类中所用标识有@Bean注解的方法都会发布成一个bean,在spring mvc框架中也提供了注解的配置的方式,即@EnableWebMvc,这篇文章试图讨论下@EnableWebMvc这个注解背后干了什么。


大家都知道spring mvc容器很灵活,处理请求的各个模块都是隔离的,很方便定制化,当你使用@EnableWebMvc来配置spring mvc时,会把WebMvcConfigurationSupport当成配置文件来用,将其中所有标识有@Bean注解的方法配置成bean,这就成了Spring mvc的默认配置(了解Spring mvc的人应该都知道下面bean的作用):


HandlerMapping:


  • Bean: requestMappingHandlerMapping
  • Bean: viewControllerHandlerMapping
  • Bean: beanNameHandlerMapping
  • Bean: resourceHandlerMapping
  • Bean: defaultServletHandlerMapping
HandlerAdapter:
  • Bean: requestMappingHandlerAdapter
  • Bean: httpRequestHandlerAdapter
  • Bean: simpleControllerHandlerAdapter
ExceptionResolver
  • Bean: handlerExceptionResolver
其他
  • Bean: mvcConversionService
  • Bean: mvcValidator

前面说过各个组件都是可以定制化,在WebMvcConfigurationSupport是通过模板方法模式来实现的,在各个发布成Bean的方法中,都调用了自定义组件的抽象方法,在子类中可以覆盖,如
对HandlerAdapter组件,有addInterceptors(InterceptorRegistry registry)可以添加自己的拦截器;
对conversionService组件,有addFormatters(FormatterRegistry registry)可以添加自己的类型转换器;
等等。。。
从而实现定制化。

上面提到子类,Spring mvc提供的默认实现是DelegatingWebMvcConfiguration,覆盖父类的方法之前,它会寻找容器中所有的WebMvcConfigurer实现类,将所有WebMvcConfigurer实现类中的配置组合起来,组成一个超级配置,这样,WebMvcConfigurationSupport中的bean发布时,就会把这所有配置都带上了。

不知道说清楚了没有


分享到:
评论
2 楼 洛雨男铃 2018-01-13  
1 楼 小城风带香 2016-05-12  
虽然简单但是很有用呐!!

相关推荐

    《精通Spring MVC 4》源码

    DispatcherServlet作为Spring MVC的前端控制器,负责接收HTTP请求,然后根据配置分发到相应的处理器。源码中可以发现它如何处理请求映射、拦截器链以及异常处理。 Controller接口是Spring MVC中的关键角色,它定义...

    10 扩展之Spring MVC中如何实现国际化i18n慕课专栏1

    可以使用XML配置或注解方式,Spring MVC中通常推荐使用注解方式。`basename`属性指定了locale目录下以`messages`开头的文件名。 在Controller中,我们需要添加处理Locale的请求响应方法。通过检测`Accept-Language`...

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

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

    Spring 3.0 mvc 简单跳转 实例 源码

    在这个实例中,我们将深入探讨如何在Spring 3.0 MVC中实现简单的页面跳转,以及源码背后的逻辑。 1. **Spring MVC 框架简介** Spring MVC是Spring框架的一部分,它提供了一种模型-视图-控制器(MVC)架构,使得...

    spring注解笔记

    ### Spring注解知识点详解 #### 1. Spring注解基础 在Spring框架中,注解是一种轻量级的依赖注入方式,能够简化配置并提高开发...同时,理解每个注解背后的原理及使用场景对于开发高效且可维护的Spring应用至关重要。

    Spring MVC upload/download file(注释和非注释实现)

    Spring MVC通过`MultipartFile`接口和一系列配置来支持这些操作。 首先,让我们讨论文件上传。在Spring MVC中,你可以通过在控制器方法的参数中声明`MultipartFile`来接收上传的文件。这个接口提供了诸如文件名、...

    org.springframework.web.servlet-3.0.0.M4.jar

    7. **MVC注解**:3.0版本开始,Spring MVC大力推广使用注解进行配置,如@RequestMapping、@RequestParam、@PathVariable等,使得代码更加简洁、可读性更强。 8. **国际化的支持**:Spring MVC提供对多语言的支持,...

    spring注解实例

    在IT行业中,Spring框架是Java开发中的核心工具之一,它为构建企业级应用程序提供了全面的解决方案。...同时,通过阅读文档,你可以深入理解每个注解的用法和背后的设计理念,进一步提升你的Spring框架应用能力。

    springMVC_study.zip

    Spring MVC 使用注解驱动开发,极大地简化了配置。例如,@Controller定义了一个控制器类,而@RequestMapping可以用于类或方法上,用来映射HTTP请求。此外,@RequestParam用于从请求参数中获取数据,@PathVariable...

    基于注解驱动的Struts_Spring_Hibernate开发

    例如,通过Spring的`@Configuration`和`@ComponentScan`注解,可以定义一个配置类并扫描指定包下的bean,避免手动编写大量的XML配置。 总之,基于注解驱动的Struts 2、Spring和Hibernate开发提供了一种高效、灵活的...

    Spring注解详解

    在讨论Spring框架时,我们通常是在讲Spring整个生态,而不仅仅是Spring...随着Spring技术的不断更新与发展,新的注解和特性会不断出现,但其背后的设计思想与核心理念是不变的,这也是学习和掌握Spring框架的关键所在。

    spring源码spring-framework-4.2.5.RELEASE

    7. **Model-View-Controller**:Spring MVC遵循MVC模式,`org.springframework.web.bind.annotation`包中的注解如@RequestMapping、@RequestParam等,用于定义控制器方法的映射和参数绑定。 四、Transaction管理 8...

    Spring in Action 中文版 pdf

    通过阅读《Spring in Action》中文版,开发者不仅可以学习到Spring的基本用法,还能深入了解其背后的原理,从而提升自己的技术水平。配合压缩包内的`sia3-code`源码,可以进行实践操作,进一步巩固理论知识。这是一...

    springmvc从入门到精通的代码.rar

    Spring MVC 支持注解驱动,如 `@RequestMapping`、`@GetMapping`、`@PostMapping` 等,可以直接在 Controller 类或方法上使用这些注解来定义请求映射。 4. **模型数据绑定**: 使用 `@RequestParam`、`@...

    北大青鸟spring培训课件

    课件中将深入讲解如何通过XML配置或注解方式实现依赖注入,并探讨其背后的原理和优势。 其次,Spring的IoC(Inversion of Control,控制反转)容器是整个框架的基础,它负责创建、装配和管理对象。学员将学习如何...

    Tom_深入分析Spring源码doc

    《Spring源码深度解析》 ...通过深入研究Spring源码,开发者可以更深入地了解其背后的实现机制,从而在实际项目中更加游刃有余。无论是为了提升个人技能,还是为了解决实际问题,Spring源码的探索都是一次宝贵的旅程。

    Intellij IDEA 旗舰版创建 Spring MVC 项目踩过的坑

    IntelliJ IDEA 旗舰版创建 Spring MVC 项目的过程虽然便捷,但往往需要额外的配置步骤才能使项目正常运行。以下是一些关键知识点和步骤的详细解释: 1. **创建Spring MVC项目** - 在IntelliJ IDEA中选择“Create ...

    spring security 3.1学习资料 及 附件下载

    1. 集成Spring MVC:Spring Security 3.1与Spring MVC紧密结合,提供了基于注解的便捷安全配置,使开发者能够快速实现Web应用的安全控制。 2. XML与Java配置:3.1版本支持XML配置和基于Java的配置方式,开发者可以...

    OnLineLoans

    6. **MVC配置**:在Spring MVC应用中,通常使用XML或Java配置来定义映射、拦截器、视图解析器等组件。 7. **拦截器(Interceptors)**:这些是可选的处理器,可以在请求到达控制器之前或之后执行一些预处理或后处理...

    官方原版源码spring-framework-5.1.4.RELEASE.zip

    例如,关于IoC(Inversion of Control,控制反转)的实现,Spring使用了XML配置或注解来定义bean的依赖关系,通过反射机制动态加载和管理bean。另外,AOP模块实现了切面编程,允许我们定义横切关注点,如日志、事务...

Global site tag (gtag.js) - Google Analytics