栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

目录
    • 1. context:annotation-config 作用
    • 2. context:component-scan 作用
    • 3. mvc:annotation-driven
    • 4. 官方介绍

1. context:annotation-config 作用

隐式地向Spring容器中注入以下4 个 BeanPostProcessor :

  • AutowiredAnnotationBeanPostProcessor : 用来识别处理@Autowired和@Value注解
  • CommonAnnotationBeanPostProcessor: 用来识别处理@Resource 、@PostConstruct、@PreDestroy等注解
  • PersistenceAnnotationBeanPostProcessor: 用来识别和处理@PersistenceContext注解
  • RequiredAnnotationBeanPostProcessor: 用来识别和处理@Required的注解

具体参考如下ContextNamespaceHandler :

public class ContextNamespaceHandler extends NamespaceHandlerSupport {
    public void init() {
        this.registerBeanDefinitionParser("property-placeholder", new PropertyPlaceholderBeanDefinitionParser());
        this.registerBeanDefinitionParser("property-override", new PropertyOverrideBeanDefinitionParser());
        this.registerBeanDefinitionParser("annotation-config", new AnnotationConfigBeanDefinitionParser());
        this.registerBeanDefinitionParser("component-scan", new ComponentScanBeanDefinitionParser());
        this.registerBeanDefinitionParser("load-time-weaver", new LoadTimeWeaverBeanDefinitionParser());
        this.registerBeanDefinitionParser("spring-configured", new SpringConfiguredBeanDefinitionParser());
        this.registerBeanDefinitionParser("mbean-export", new MBeanExportBeanDefinitionParser());
        this.registerBeanDefinitionParser("mbean-server", new MBeanServerBeanDefinitionParser());
    }
}

一般来说,这些注解比较常用. 为了避免繁琐, spring给我们提供了来简化配置方式. 不过我们使用注解一般都会配置自动包扫描, 该配置项其实也注入了上述4个BeanPostProcessor,因此当使用 后,就可以将 移除了。


2. context:component-scan 作用

它不仅启用了对类包进行扫描, 将注解类的Bean注册到容器,同时还具有的功能, 即向容器中注入以上4个BeanPostProcessor .
具体参考上述ContextNamespaceHandler.


3. mvc:annotation-driven

相当于注册了DefaultAnnotationHandlerMapping和AnnotationMethodHandlerAdapter两个bean,可以还配置一些messageconverter。即解决了@Controller注解的使用前提配置。

具体参考如下MvcNamespaceHandler :

public class MvcNamespaceHandler extends NamespaceHandlerSupport {
    public void init() {
        this.registerBeanDefinitionParser("annotation-driven", new AnnotationDrivenBeanDefinitionParser());
        this.registerBeanDefinitionParser("default-servlet-handler", new DefaultServletHandlerBeanDefinitionParser());
        this.registerBeanDefinitionParser("interceptors", new InterceptorsBeanDefinitionParser());
        this.registerBeanDefinitionParser("resources", new ResourcesBeanDefinitionParser());
        this.registerBeanDefinitionParser("view-controller", new ViewControllerBeanDefinitionParser());
    }
}

4. 官方介绍
 is a tag added in Spring 3.0 which does the following: 

1. Configures the Spring 3 Type ConversionService (alternative to PropertyEditors) 
2. Adds support for formatting Number fields with @NumberFormat 
3. Adds support for formatting Date, Calendar, and Joda Time fields with @DateTimeFormat, if Joda Time is on the classpath 
4. Adds support for validating @Controller inputs with @Valid, if a JSR-303 Provider is on the classpath 
5. Adds support for support for reading and writing XML, if JAXB is on the classpath (HTTP message conversion with @RequestBody/@ResponseBody) 
6. Adds support for reading and writing JSON, if Jackson is o n the classpath (along the same lines as #5) 
Looks for annotations on beans in the same application context it is defined and declares support for all the general annotations like @Autowired, @Resource, @Required, @PostConstruct etc etc. 

 does NOT search for @Component, @Controller, etc. 
 DOES search for those @Component annotations, as well as the annotations that  does.

there are other "annotation-driven" tags available to provide additional functionality in other Spring modules. For example,  enables the use of the @Transaction annotation,  is required for @Scheduled
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/331959.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号