Spring <context:annotation-config/> 解说

本文深入探讨了Spring框架中基于主机方式配置的注解自动化注册过程,包括Autowired、Resource、PostConstruct、PreDestroy等注解的自动注入,并通过context:annotation-config简化配置。同时介绍了组件扫描配置项如何包含上述处理器的功能,从而减少传统配置的冗余。

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

<wbr><span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">在基于主机方式配置</span><span lang="EN-US" style="padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">Spring</span><span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">的配置文件中,你可能会见到</span><span style="color:#ff00; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px"><span lang="EN-US" style="padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">&lt;context:annotation-config/&gt;</span></span><span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">这样一条配置,他的作用是式地向</span><span lang="EN-US" style="padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px"><wbr>Spring<wbr></wbr></wbr></span><span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">容器注册</span></wbr>

AutowiredAnnotationBeanP<wbr>ostProcessor</wbr>CommonAnnotationBeanPost<wbr>Processor</wbr>

PersistenceAnnotationBea<wbr>nPostProcessor<wbr></wbr></wbr>以及<wbr>RequiredAnnotationBeanPo<wbr>stProcessor<wbr></wbr></wbr></wbr><wbr>4<wbr></wbr></wbr>BeanPostProcessor

注册这4<wbr></wbr>BeanPostProcessor的作用,就是为了你的系统能够识别相应的注解。

例如:

如果你想使用@Autowired注解,那么就必须事先在<wbr>Spring<wbr></wbr></wbr>容器中声明<wbr>AutowiredAnnotationBeanP<wbr>ostProcessorBean</wbr></wbr>。传统声明方式如下

<bean<wbr></wbr>class="org.springframework.beans.factory.annotation.<wbr>AutowiredAnnotationBeanP<wbr>ostProcessor<wbr>"</wbr></wbr></wbr>/><wbr></wbr>

如果想使用@ Resource<wbr></wbr>@ PostConstruct@ PreDestroy等注解就必须声明CommonAnnotationBeanPost<wbr>Processor</wbr>

如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBea<wbr>nPostProcessor</wbr>Bean

如果想使用<wbr>@Required</wbr>的注解,就必须声明RequiredAnnotationBeanPo<wbr>stProcessor</wbr>Bean。同样,传统的声明方式如下:

<bean<wbr></wbr>class="org.springframework.beans.factory.annotation.RequiredAnnotationBeanPo<wbr>stProcessor"</wbr>/><wbr></wbr>

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

<wbr><wbr>不过,呵呵,<span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">我们使用注解一般都会配置</span><span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">扫描包路径选项</span></wbr></wbr>

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

<wbr><wbr><wbr><span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">该配置项其实也包含了自动注入上述</span><span lang="EN-US" style="padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">processor</span><span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">的功能,因此当使用</span><span lang="EN-US" style="padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px"><wbr>&lt;context:component-scan/&gt;<wbr></wbr></wbr></span><span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">后,就可以将</span><span lang="EN-US" style="padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px"><wbr>&lt;context:annotation-config/&gt;<wbr></wbr></wbr></span><span style="font-family:宋体; padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px">移除了。</span></wbr></wbr></wbr>


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值