文档章节

annotation-driven,annotation-config,component-scan的区别与作用

霜叶情
 霜叶情
发布于 2017/05/31 16:46
字数 552
阅读 28
收藏 0
<mvc:annotation-driven/>

相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,配置一些messageconverter。即解决了@Controller注解的使用前提配置。并提供了:数据绑定支持,@NumberFormatannotation支持,@DateTimeFormat支持,@Valid支持,读写XML的支持(JAXB),读写JSON的支持(Jackson)。

一般在springmvc项目中的spring-mvc.xml中配置该信息,取代下面的方式:

<bean class="org.springframework.web.servlet.mvc.annotation.DefaultAnnotationHandlerMapping"/>
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<bean class="org.springframework.http.converter.json.MappingJackson2HttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
</bean>
</list>
</property>
</bean>

=============================

<context:annotation-config/>
  1. 隐式地向Spring容器中注册AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、PersistenceAnnotationBeanPostProcessor 及 equiredAnnotationBeanPostProcessor 这 4 个 BeanPostProcessor。 在配置文件中使用<context:annotationconfig/>之前,必须在 <beans> 元素中声明 context 命名空间<context:component-scan/>。

  2. 是对包进行扫描,实现注释驱动Bean定义,同时将bean自动注入容器中使用。即解决了@Controller标识的类的bean的注入和使用。

=============================

<context:component-scan/>

配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,同时还启用了注释驱动自动注入的功能(即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor),因此当使用 <context:component-scan/> 后,除非需要使用PersistenceAnnotationBeanPostProcessor和equiredAnnotationBeanPostProcessor两个Processor的功能(例如JPA等)否则就可以将 <context:annotation-config/> 移除了。

 

------

<context:component-scan/>标签是告诉Spring 来扫描指定包下的类,并注册被@Component,@Controller,@Service,@Repository等注解标记的组件。

    而<mvc:annotation-driven/>是告知Spring,我们启用注解驱动。然后Spring会自动为我们注册上面说到的几个Bean到工厂中,来处理我们的请求。

配置springmvc项目的时候,管他三七二十一,都加上<mvc:annotation-driven />,主要有下面功能:

1,支持使用ConversionService实例对表单参数进行类型转换

例如:JSP前端页面传递一个form表单包含学生信息,在控制层可以定义一个DTO Student来接收,直接就变成了对象了
2,支持使用@NumberFormat annotation,@DateTimeFormat注解完成数据类型的格式化
例如:一个DTO里面有个货币和一个日期,可以格式化
3,支持使用@Valid注解对Javabean实例进行JSR 303验证
4,支持使用@RequestBody和@ResponseBody注解

© 著作权归作者所有

上一篇: 国家,家国
下一篇: 博客收藏
霜叶情
粉丝 3
博文 102
码字总数 67306
作品 0
长沙
私信 提问
Spring配置文件详解:和和<mvc:annotati...

context:annotation-config/ 在基于主机方式配置Spring时,Spring配置文件applicationContext.xml,你可能会见context:annotation-config/这样一条配置,它的作用是隐式的向Spring容器注册 Au...

留给明天
2016/11/17
45
0

链接:http://blog.csdn.net/baple/article/details/16864175 链接:http://blog.csdn.net/Baple/article/details/16864835 传统的bean声明: 向Sp...

yjm199
2017/01/01
0
0

<mvc:annotation-driven >和context:component-scan的区别 为啥要说这两个注解的区别,因为<mvc:annotation-driven >和context:component-scan放置的位置出错,可能就会导致项目出现404的错误......

小车车
2016/07/07
38
0
和<context:component-

<context:annotation-config /> 它的作用是隐式地向 Spring 容器注册 - AutowiredAnnotationBeanPostProcessor、 - CommonAnnotationBeanPostProcessor、 - PersistenceAnnotationBeanPostP......

五大三粗
2015/11/02
0
0
用spring mvc注解,java代码还能分模块化分层吗?

现在有一个java类,用的注解,这个类放到com.yizu.controller启动不会报错,如果放到com.yizu.system.controller启动报错. 用spring mvc注解,java代码还能分模块化分层吗?...

zhang_huan
2015/09/23
274
0

没有更多内容

加载失败,请刷新页面

加载更多

【AI实战】手把手教你深度学习文字识别(文字检测篇:基于MSER, CTPN, SegLink, EAST等方法)

文字检测是文字识别过程中的一个非常重要的环节,文字检测的主要目标是将图片中的文字区域位置检测出来,以便于进行后面的文字识别,只有找到了文本所在区域,才能对其内容进行识别。 文字检...

雪饼
今天
7
0
思维导图XMind 8 Pro 绿化方法(附序列号)

按部就班: Step 1 -全新下载最新版本的 Xmind 8(注必须是英文官方的版本,中文代{过}{滤}理网站的版本修改过,无法使用pj); Step 2 -安装完毕后,点击文末的下载按钮下载pj补丁文件包,将...

一只小青蛙
今天
10
0
数据结构(ER数据库)设计规范

表命名规范 表命名的规则分为3个层级,层级之间通过_分割,例如b_r_identity、d_l_identity。规约为: [leavel]_[type]_[name] [leavel] 表示数据库表的层级和功能,分为: s:业务无关的系统...

随风溜达的向日葵
今天
6
0
阿里Sentinel控制台源码修改-对接Apollo规则持久化

https://github.com/alibaba/Sentinel/wiki/%E5%9C%A8%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%AD%E4%BD%BF%E7%94%A8-Sentinel 动态规则扩展 https://github.com/alibaba/Sentinel/wiki......

jxlgzwh
昨天
8
0
在Linux系统中创建SSH服务器别名

如果你经常通过 SSH 访问许多不同的远程系统,这个技巧将为你节省一些时间。你可以通过 SSH 为频繁访问的系统创建 SSH 别名,这样你就不必记住所有不同的用户名、主机名、SSH 端口号和 IP 地...

老孟的Linux私房菜
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部