mvc:annotation-driven和context:component-scan区别

mvc:annotation-driven和context:component-scan区别

1. < mvc:annotation-driven/>

< mvc:annotation-driven/>相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter 两个bean,配置一些messageconverter。即解决了@Controller注解的使用前提配置。

这个标签对应的实现类是org.springframework.web.servlet.config.AnnotationDrivenBeanDefinitionParser
这个类主要注册8个类的实例,主要是用来帮助我们处理请求映射,决定是哪个controller的哪个方法来处理当前请求,异常处理。

在spring中一般采用@RequestMapping注解来完成映射关系,要向使@RequestMapping注解生效,必须向上下文中注册DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter实例,这两个实例分别在类级别和方法级别处理,而annotation-driven配置帮助我们自动完成上述两个实例的注入。

2. < context:annotation-config/>

< context:annotation-config/>是对包进行扫描,实现注释驱动Bean定义,同时将bean自动注入容器中使用。

它的实现类是org.springframework.context.annotation.ComponentScanBeanDefinitionParser.

把鼠标放在context:component-scan上就可以知道有什么作用的,用来扫描该包内被@Repository @Service @Controller的注解类,然后注册到工厂中。并且context:component-scan激活@ required。@ resource,@ autowired、@PostConstruct @PreDestroy @PersistenceContext @PersistenceUnit。使得在适用该bean的时候用@Autowired就行了。

总结

context:component-scan 只做扫描注解包下bean的工作,让bean生效。在这个基础上配置jsp的视图解析其实就可以正常访问jsp视图。
但是这时候,你无法实现如接收返回json数据、参数验证、统一异常等控制器(或者业务层)的功能。

mvc:annotation-driven/ 标签的作用就在于此,注册HandlerMapping和HandlerAdapter两个bean。
image.png

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值