背后做了什么

发布于 2022-09-07 00:08:54 字数 317 浏览 9 评论 0

在Spring中,我们可以使用注解来减少xml配置文件的配置,如可以使用@Controller,@Autowired,
@RequestMapping,@Service等等;

在需要使用以上注解的时候,我们需要在xml配置文件中写上:
     <context:component-scan base-package="..."/>
有时候写上下面的注解就行:
     <mvc:annotation-driven/>
     
貌似它们的作用有时候是重合的?写上这两个注解的时候背后各自都做了什么?网上描述这两个配置资料的
太乱了           

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

天赋异禀 2022-09-14 00:08:54

他们的作用不重合。

context:component-scan 的作用是扫描对应的 base-package,将 base-package 及其子包中被 @Component@Controller@Service@Repository 等注解的类,注册到为 Spring Context,即在上下文环境中注册一个这样的 Bean,这些 Bean 为 Spring MVC 提供了最基础的支持。


<mvc:annotation-driven/> 是为 MVC 提供额外的支持,参考 Spring 的官方文档<mvc:annotation-driven/> 最主要的作用是注册 HandlerMapping(实现为 DefaultAnnotationHandlerMapping) 和 HandlerAdapter(实现为 AnnotationMethodHandlerAdapter) 两个类型的 Bean,这两个 Bean 为 @Controllers(所有控制器) 提供转发请求的功能。还有一些其他的为 MVC 提供的功能:

  • Using the Spring 3 Type ConversionService as a simpler and more robust alternative to JavaBeans PropertyEditors
  • Support for formatting Number fields with @NumberFormat
  • Support for formatting Date, Calendar, and Joda Time fields with @DateTimeFormat, if Joda Time is on the classpath
  • Support for validating @Controller inputs with @Valid, if a JSR-303 Provider is on the classpath
  • Support for reading and writing XML, if JAXB is on the classpath
  • Support for reading and writing JSON, if Jackson is on the classpath

更多细节请参考官方文档。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文