Spring <context:annotation-config/> 说明_weixin_33895475的博客-程序员秘密

技术标签: java  

在基于主机方式配置Spring的配置文件中,你可能会见到<context:annotation-config/>这样一条配置,他的作用是式地向 Spring 容器注册
AutowiredAnnotationBeanPostProcessor、CommonAnnotationBeanPostProcessor、
PersistenceAnnotationBeanPostProcessor 以及 RequiredAnnotationBeanPostProcessor 这 4 个BeanPostProcessor。
注册这4个 BeanPostProcessor的作用,就是为了你的系统能够识别相应的注解。
例如:
如果你想使用@Autowired注解,那么就必须事先在 Spring 容器中声明 AutowiredAnnotationBeanPostProcessor Bean。传统声明方式如下:

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

如果想使用@ Resource 、@ PostConstruct、@ PreDestroy等注解就必须声明CommonAnnotationBeanPostProcessor
如果想使用@PersistenceContext注解,就必须声明PersistenceAnnotationBeanPostProcessor的Bean。
如果想使用 @Required的注解,就必须声明RequiredAnnotationBeanPostProcessor的Bean。同样,传统的声明方式如下:

<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/> 移除了。

 

备注:
在配置文件中使用 context 命名空间之前,必须在 <beans> 元素中声明 context 命名空间。

复制代码

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="http://www.springframework.org/schema/beans"
xmlns:context="http://www.springframework.org/schema/context" 
...
xsi:schemaLocation="http://www.springframework.org/schema/beans 
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd 
http://www.springframework.org/schema/context 
http://www.springframework.org/schema/context/spring-context-3.0.xsd 
...
<context:annotation-config/>
</beans>

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33895475/article/details/86206503

智能推荐

ubuntu 20.10 下载安装教程_ubuntu下载_Wyn_的博客-程序员秘密

1、下载镜像,地址如下http://mirrors.163.com/ubuntu-releases/20.10/我下的是这个:2、虚拟机创建我用的虚拟机是VMware1)点击【创建新的虚拟机】;2)点击【下一步】;3)选择第二个选项【安装程序光盘映像文件】,点击【浏览】,选择最开始下的ubuntu镜像,然后点击下一步;4)更改虚拟机名字和储存位置,然后点击【下一步】;注意:默认储存在C盘。最好换个位置,因为虚拟机占用比较大,在c盘会影响系统正常运行的速度

http缓存策略之强缓存与协商缓存_小丁冲鸭!的博客-程序员秘密

前言:web中有些场景下很多内容是不需要更改的,如果每次请求都向服务器请求那些一段时间内不会变动的内容数据,会造成不必要的带宽浪费。有时候网络较差时,请求这些内容就需要花费很长时间来打开页面。因此通过浏览器的缓存机制,协同服务器让浏览器缓存那些不需要频繁变动的资源就可以有效地降低流量消耗和响应时间。一、什么是http缓存http缓存指的是:当客户端向服务器请求资源时,会先查...

kali linux 命令_Ghost丶的博客-程序员秘密

系统信息 arch 显示机器的处理器架构(1) uname -m 显示机器的处理器架构(2) uname -r 显示正在使用的内核版本 dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI) hdparm -i /dev/hda 罗列一个磁盘的架构特性 hdparm -tT /dev/sda 在磁盘上执行测试性读取操作 cat /proc/cpui

【POI】Java设置Excel(.xlsx)单元格属性_poi 设置单元格属性_懵a呆的博客-程序员秘密

使用过的几种样式的设置方式:XXXServiceImpl.javapublic class XXXServiceImpl implements XXXService { public void test() { Map&lt;String, Object&gt; styleMap = new HashMap&lt;String, Object&gt;(); ...

无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM 对象强制转换为接口类型“Microsoft.Office.Interop.Exc..._weixin_33857230的博客-程序员秘密

报错内容如下:无法将类型为“Microsoft.Office.Interop.Excel.ApplicationClass”的COM对象强制转换为接口类型“Microsoft.Office.Interop.Excel._Application”。此操作失败的原因是对 IID 为“{000208D5-0000-0000-C000-000000000046}”的接口的COM组件调用QueryInt...

java中数组逆向输出_JAVA编程问题,数组写入,逆向输出。(代码如下)_璟落的博客-程序员秘密

importjava.util.*;importjava.io.*;importjava.lang.*;publicclassDemo5{publicstaticvoidmain(Stringargs[])throwsIOException{intarr[]={100,101,102,103,104,105};BufferedWriter...import java.util.*;import j...

随便推点

CCRC信息安全服务资质认证流程知识点汇总_ccrc证书和cisp_ITSS_CISAW_CISP_的博客-程序员秘密

随着我国信息化和信息安全保障工作的不断深入推进,以应急处理、风险评估、灾难恢复、系统测评、安全运维、安全审计、安全培训和安全咨询等为主要内容的信息安全服务在信息安全保障中的作用日益突出。加强和规范信息安全服务资质管理已成为信息安全管理的重要基础性工作。一、CCRC(原名ISCCC)概况CCRC(原名ISCCC)信息安全服务资质认证是中国网络安全审查技术与认证中心依据国家法律法规、国家标准、行业标准和技术规范,按照认证基本规范及认证规则,对提供信息安全服务机构的信息安全服务资质包括法律地位、资源状况、管理

javascript代码提示:以vscode,typings,babylonjs为例子_js代码提示_wangmarkqi的博客-程序员秘密

这块相关文章不少,但是有点老。如果你不想用typescript,如果你正在用vscode但是不愿意webpack,npm install,只想用script引入,还如果你虽然那么多事,仍然需要代码提示,好吧,那你就和我一样,往下看吧。首先,你要装typings。自己上typings的查阅安装指南。本文只说全局,不说细节。typings是干嘛的?他是提示类型的,他需要在类型文件的帮助下干这个事情。类型文件typescript的开发者学雷锋,很多库都有。那么我们需要把他们download下来。一种方法是n

Java虚拟机垃圾回收(四) 总结:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法_尐譽的博客-程序员秘密

Java虚拟机垃圾回收(四) 总结:内存分配与回收策略 方法区垃圾回收 以及 JVM垃圾回收的调优方法       在《Java对象在Java虚拟机中的创建过程》了解到对象创建的内存分配,在《Java内存区域 JVM运行时数据区》中了解到各数据区有些什么特点、以及相关参数的调整,在《Java虚拟机垃圾回收(一) 基础》中了解到如何判断对象是存活还是已经死亡?在《Java虚拟机垃圾回收(二) 垃圾回

xxl-job采坑指南xxl-rpc remoting error(connect timed out)_纸素画笺的博客-程序员秘密

使用本地网络进行连接,导致的无法注册。报错信息address:http://192.168.x.xxx:9999/ code:500 msg:xxl-rpc remoting error(connect timed out), for url : http://192.168.x.xxx:9999/run解决方案1.将自动注册转为手动注册2.使用内网穿透工具3.将手动注册地址填写为内网穿透的地址......

SpringBoot集成Mybatis,这一篇就够了_中式代码美式咖啡的博客-程序员秘密

准备工作新建表新建实体类新建dao接口新建dao映射文件在pom.xml中添加依赖&lt;dependency&gt; &lt;groupId&gt;org.mybatis.spring.boot&lt;/groupId&gt; &lt;artifactId&gt;mybatis-spring-boot-starter&lt;/artifactId&gt;...

堆排--原地排序和非原地排序_猪饲夫妇、的博客-程序员秘密

堆排实现内容:1.普通堆排–借助一个新数组实现2.原地排序实现堆排–在原数组基础上实现普通堆排://HeapTest.javapackage heap;import java.util.Arrays;import java.util.Comparator;//基于数组的堆public class HeapTest&lt;E&gt;{ //堆结构为完全二叉树,值要...

推荐文章

热门文章

相关标签