<context:component-scan base-package=""> 与 <context:annotation-config 区别
- <</SPAN>context:component-scan/> 配置项不但启用了对类包进行扫描以实施注释驱动 Bean 定义的功能,
- 同时还启用了注释驱动自动注入的功能
- ( 即还隐式地在内部注册了 AutowiredAnnotationBeanPostProcessor 和 CommonAnnotationBeanPostProcessor ),
- 因此当使用 <</SPAN>context:component-scan/> 后,就可以将 <</SPAN>context:annotation-config/>移除了。
- <</SPAN>context:component-scan/> 的 base-package 属性指定了需要扫描的类包,类包及其递归子包中所有的类都会被处理。
- 作用就是所有的 hibernate 配置都不用在 hibernate.cfg.xml 里配置了,也不用一大堆的像Employee.hbm.xml,Person.hbm.xml。
(一下是详解)
Spring2.5中使用注解装配属性 可在Java代码中使用@Resource或者@Autowired注解进行装配,但需在XML中配置以下信息 xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd" 然后显式的配置<context:annotation-config/> 该配置隐式注册了多个对注解进行解析的处理器,如下列举 AutowiredAnnotationBeanPostProcessor CommonAnnotationBeanPostProcessor PersistenceAnnotationBeanPostProcessor RequiredAnnotationBeanPostProcessor 其实,注解本身做不了任何事情,和XML一样,只起到配置的作用,主要在于背后强大的处理器
另外,比较建议使用@Resource注解,而不要使用@Autowired注解 因为@Autowired注解是Spring提供的,而@Resource注解是J2EE提供的 在JDK6中就已经包含@Resource注解了,所以它没有跟Spring紧密耦合 并且在使用Spring时,若使用了JSR-250中的注解,如@Resource//@PostConstruct//@PreDestroy 那么还需要Spring安装目录中的SPRING_HOME//lib//j2ee//common-annotations.jar包的支持 这里面的@Resource注解就是在SPRING_HOME//lib//j2ee//common-annotations.jar中的
@Resource注解 @Resource注解和@Autowired一样,也可以标注在字段或属性的setter方法上 @Resource默认按名称装配,名称可以通过name属性指定。当找不到与名称匹配的bean时,才会按类型装配 若注解标注在字段上且未指定name属性,则默认取字段名作为bean名称寻找依赖对象 若注解标注在setter上且未指定name属性,则默认取属性名作为bean名称寻找依赖对象 如果没有指定name属性,并且按照默认的名称仍找不到依赖对象时,它就会按类型匹配 但只要指定了name属性,就只能按名称装配了
@Autowired注解 @Autowired默认是按类型装配对象的,默认情况下它要求依赖对象必须存在 如果允许null值,可以设置它的required属性为FALSE,如@Autowired(required=false) 若想要按名称装配,可以结合@Qualifier注解一起使用,如@Autowired(required=false) @Qualifier("personDaoBean")
Spring2.5的组件自动扫描 在一个稍大的项目中通常会有上百个组件,如果都使用XML的bean定义来配置组件的话 显然会增加配置文件的体积,查找及维护也不方便 而Spring2.5就为我们引入了组件自动扫描机制 它可以在classpath下寻找标注了@Service、@Repository、@Controller、@Component注解的类 并把这些类纳入Spring容器中管理,它的作用和在XML中使用bean节点配置组件是一样的 使用自动扫描机制,则需配置启动自动扫描 其中base-package指定需要扫描的包,它会扫描指定包中的类和子包里面类 @Service用于标注业务层组件 @Repository用于标注数据访问组件,即DAO组件 @Controller用于标注控制层组件,如Struts中的Action @Component泛指组件,当组件不要好归类时,可以使用这个注解进行标注
1、可以使用诸如@Service("personDao")修改bean名称,而它默认的是将首字母小写的类名作为名称 2、若要更改作用域的话,可以使用@Scope("prototype")注解来修改作用域 3、若想让实例化之后去执行初始化方法,可以使用@PostConstruct标注在方法上 4、同样@PreDestroy注解标注在方法上,可以用来指定销毁时执行的方法 这里的@PostConstruct是EJB3里面用来初始化bean的注解,它也不是Spring中的注解 并且的背后注册了很多用于解析注解的处理器 其中就包括了配置项里面的注解所使用的处理器 所以配置了之后,便无需再配置
<context:component-scan base-package=""> 与 <context:annotation-config 区别的更多相关文章
- button与input[type=”button”]的区别
button与input[type="button"]的区别 特别感谢 @守护晴天 ,指出了博客中不细致不严谨的地方,也让我学到了更多,更多是觉得抱歉,由于自己的不细致可能误导了一 ...
- 关于<button> 没写 type='button' 导致点击时提交以及<button>和<input type="button">的区别
这是我的第一篇博客,如果写的不好,请见谅 这是一个关于button按钮一个小问题 最近刚开学跟着老师一起写代码,在模仿JAVA web程序设计(慕课版) P61页第三章 Ajax处理XML的代码中发现 ...
- <button>和<input type="button"> 的区别
<button>标签 定义和用法 <button> 标签定义一个按钮. 在 button 元素内部,您可以放置内容,比如文本或图像.这是该元素与使用 input 元素创建的按钮 ...
- <button>与<input type="button"> 的区别
<button> button按钮点击会刷新整个页面 <input type="button"> 不会刷新整个页面 本文为本人用来记录自己做的一些东西,如 ...
- <button>与<input type="button">的区别
一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...
- 解析<button>和<input type="button"> 的区别
一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...
- <button>与<input type="button">
在做form表单,点击按钮随机生成两串密钥的时候 1.用第一种按钮的时候,会出现刷新form表单的现象.会把创建密钥前面的输入框中的字消失.虽然能生成密钥1和密钥2,但是会闪一下,随即消失.几个输入框 ...
- 解析button和input type=”button”的区别
一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...
- 【转】解析<button>和<input type="button"> 的区别
一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...
- button和input type=button的区别及注意事项
<button>标签 定义和用法 <button>标签定义一个按钮. 在button元素内部,您可以放置内容,比如文本或图像.这是该元素与使用input元素创建的按钮之间的不同 ...
随机推荐
- Android 文章合集 200+ 篇
code小生 一个专注大前端领域的技术平台 公众号回复Android加入安卓技术群 镇楼 2017 文章合集 2017 年度文章分类整理 下面是 2018 年公众号所发表的文章分类整理 面经 一年经验 ...
- BFC是什么?BFC有什么用?看完全明白
一.BFC是什么? 官方定义 BFC(Block Formatting Context,块格式化上下文) 是Web页面的可视化CSS渲染的一部分,是块盒子的布局过程发生的区域,也是浮动元素与其他元素交 ...
- OpenCV-Python 光流 | 四十八
目标 在本章中, 我们将了解光流的概念及其使用Lucas-Kanade方法的估计. 我们将使用cv.calcOpticalFlowPyrLK()之类的函数来跟踪视频中的特征点. 我们将使用cv.cal ...
- swagger2 接口文档
1,maven: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www. ...
- js内置对象常用方法
JS内置对象: ● String对象:处理所有的字符串操作 ● Math对象:处理所有的数学运算 ● Date对象:处理日期和时间的存储.转化和表达 ● Array对象:提供一个数组的模型.存储大量有 ...
- [noip模拟]改造二叉树<LIS>
1.改造二叉树 [题目描述] 小Y在学树论时看到了有关二叉树的介绍:在计算机科学中,二叉树是每个结点最多有两个子结点的有序树.通常子结点被称作“左孩子”和“右孩子”.二叉树被用作二叉搜索树和二叉堆.随 ...
- Pytest系列(2) - assert断言详细使用
如果你还想从头学起Pytest,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1690628.html 前言 与unittest不同,py ...
- 实现ls
一.任务详情 参考伪代码实现ls的功能,提交代码的编译,运行结果截图,码云代码链接 打开目录文件 针对目录文件 读取目录条目 显示文件名 关闭文件目录文件 二.伪代码 opendir while(re ...
- Codeforces 631 (Div. 2) E. Drazil Likes Heap 贪心
https://codeforces.com/contest/1330/problem/E 有一个高度为h的大顶堆:有2h -1个不同的正整数,下标从1到2h−1,1<i<2h, a[i] ...
- Blazor入门笔记(3)-C#与JS交互
1.环境 VS2019 16.5.1 .NET Core SDK 3.1.200 Blazor WebAssembly Templates 3.2.0-preview2.20160.5 2.前言 Bl ...
转载▼