Spring <context:annotation-config/> 和 <context:component-scan>

本文介绍Spring框架中&lt;context:annotation-config/&gt;的作用及其如何简化@Autowired、@Resource等注解的配置过程。通过使用&lt;context:annotation-config/&gt;或&lt;context:component-scan/&gt;,可以自动注册BeanPostProcessor,从而支持注解功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spring 的配置文件中,你可能会见到 <context:annotation-config/> 这样一条配置,作用是式地向  Spring  容器注册以下4个BeanPostProcessor:

AutowiredAnnotationBeanPostProcessor,CommonAnnotationBeanPostProcessor,PersistenceAnnotationBeanPostProcessor和RequiredAnnotationBeanPostProcessor 

这样,系统就能识别相应的注解。

例如:

1.如果你想使用@Autowired注解,那么就必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。传统声明方式如下

<bean class="org.springframework.beans.factory.annotation. AutowiredAnnotationBeanPostProcessor "/> 

2.如果想使用@Resource @PostConstruct@PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor

3.如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessorBean

4.如果想使用@Required的注解,就必须声明RequiredAnnotationBeanPostProcessorBean。同样,传统的声明方式如下:

<bean class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPostProcessor"/> 


一般来说,这些注解我们还是比较常用,尤其是Antowired的注解,在自动注入的时候更是经常使用,所以如果总是需要按照传统的方式一条一条配置显得有些繁琐和没有必要,于是spring给我们提供<context:annotation-config/>的简化配置方式,自动帮你完成声明。

    不过,如果使用下面配置

    <context:component-scan base-package=”XX.XX”/> 

    它其实也包含了自动注入上述processor的功能,因此当使用 <context:component-scan/> 后,就可以将 <context:annotation-config/> 移除了。其实这个配置包含来 org.springframework.stereotype 中的annotation,他们是@Component,@Controller,@Repository,@Service。

见官网http://docs.spring.io/spring/docs/2.5.x/api/org/springframework/stereotype/package-summary.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值