Spring组件扫描<context:component-scan/>使用详解

标签: spring context component | 发表时间:2015-02-27 10:00 | 作者:
出处:http://m635674608.iteye.com

1.如果不想在xml文件中配置bean,我们可以给我们的类加上spring组件注解,只需再配置下spring的扫描器就可以实现bean的自动载入。

<!-- 注解注入 -->
<context:annotation-config></context:annotation-config>
<context:component-scan base-package="com.liantuo.hotel.common.service.impl" />
<context:component-scan base-package="com.liantuo.hotel.common.dao.ibatis" />
<context:component-scan base-package="com.liantuo.hotel.app.dao.ibatis" />
<context:component-scan base-package="com.liantuo.hotel.app.service" />
<context:component-scan base-package="com.liantuo.hotel.app.service.ibatis" />
2.下面是引用spring framework开发手册中的一段话
Spring 2.5引入了更多典型化注解(stereotype annotations): @Component@Service@Controller@Component是所有受Spring管理组件的通用形式;而 @Repository@Service@Controller则是 @Component的细化,用来表示更具体的用例(例如,分别对应了持久化层、服务层和表现层)。也就是说,你能用 @Component来注解你的组件类,但如果用 @Repository@Service@Controller来注解它们,你的类也许能更好地被工具处理,或与切面进行关联。例如,这些典型化注解可以成为理想的切入点目标。当然,在Spring Framework以后的版本中, @Repository@Service@Controller也许还能携带更多语义。如此一来,如果你正在考虑服务层中是该用 @Component还是 @Service,那 @Service显然是更好的选择。同样的,就像前面说的那样, @Repository已经能在持久化层中进行异常转换时被作为标记使用了。”
3.有了<context:component-scan>,另一个<context:annotation-config/>标签根本可以移除掉,因为已经被包含进去了。
4.<context:component-scan>提供两个子标签:<context:include-filter>和<context:exclude-filter>各代表引入和排除的过滤。
如:<context:component-scan base-package="com.xhlx.finance.budget" >
<context:include-filter type="regex" expression=".service.*"/>
</context:component-scan>
5.filter标签在Spring3有五个type,如下:
Filter Type Examples Expression Description
annotation org.example.SomeAnnotation 符合SomeAnnoation的target class
assignable org.example.SomeClass 指定class或interface的全名
aspectj org.example..*Service+ AspectJ语法
regex org\.example\.Default.* Regelar Expression
custom org.example.MyTypeFilter Spring3新增自訂Type,实作org.springframework.core.type.TypeFilter


已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [spring context component] 推荐:

白话Block Formatting Context

- MArCoRQ - UED TEAM,用户体验设计,web前端开发
一,啥是Block Formatting Context. 当涉及到可视化布局的时候,Block Formatting Context提供了一个环境,HTML元素在这个环境中按照一定规则进行布局. 一个环境中的元素不会影响到其它环境中的布局. 为了让我们有个感性的认识,举个不太合适的例子. 你可以把一个页面想象成大的集装箱,这个集装箱里装的货物就是HTML元素.

LBS 已兴,Context Awareness 未起

- - 爱范儿 · Beats of Bits
搜索一下 App Store 我们能发现,很多应用也承诺了以上的功能,可是当下载下来一看,就总会有这样那样的失望. 我们的智能手机虽然被冠了智能的名字,可还无法有效的感知我们人造的大千世界. 与此同时,被期以厚望的各个纯 LBS 应用,也正在遭遇憧憬破灭的尴尬. 徽章图像越做越精美,能吸引到去点击的用户也寥寥;网上的签到看去有点热闹,可也不能打动店家的腰包;对了,我们还可以摇一摇.

微信Mars 组件 GitHub - Tencent/mars: Mars is a cross-platform network component developed by WeChat.

- -
Mars 是微信官方的跨平台跨业务的终端基础组件. comm:可以独立使用的公共库,包括 socket、线程、消息队列、协程等;. xlog:高可靠性高性能的运行期日志组件;. STN: 信令分发网络模块,也是 Mars 最主要的部分. sample 的使用请参考. gradle 接入我们提供了两种接入方式:.

从Java视角理解CPU上下文切换(Context Switch)

- - 淘宝网通用产品团队博客
从Java视角理解系统结构连载, 关注我的微博( 链接)了解最新动态在高性能编程时,经常接触到多线程. 起初我们的理解是, 多个线程并行地执行总比单个线程要快, 就像多个人一起干活总比一个人干要快. 然而实际情况是, 多线程之间需要竞争IO设备, 或者竞争锁资源,导致往往执行速度还不如单个线程. 在这里有一个经常提及的概念就是: 上下文切换(Context Switch).

Context扩展:神奇切换扩展组合

- guoan - Chrome迷
打网游的同学一定熟悉这个:物品快捷操作栏位置有限,但是东西又太多,所以一定会出现类似这样的分组:. 按一下按钮,就可以快速切换,让有限的空间承载数倍的功能性. 对于 Chrome 的某些死变态用户来说,扩展栏里有十多二十个扩展一点都不稀奇(我朋友就是. 那这类用户有没有类似网游快捷物品栏的需求呢. Context 就是这么一个扩展,让你设置好扩展的组合,然后快速一键切换:.

context是如何泄漏的 - Handlers和内部类

- - ITeye博客
本人翻译, 略有改动, 原文地址如下:. 你可能看不出来这段代码会造成内存泄漏, 确实, 它不那么容易被发现. 如果你运行Android的lint工具, 它会给你一个警告, 提示你把handler定义成静态的(static), 否则可能造成内存泄漏. 首先, 我们应该知道如下几点:. 1: 当一个android程序启动时, 框架层(framework)会为程序的主线程创建一个Looper对象.

Spring详解

- - CSDN博客架构设计推荐文章
Spring是一个开源的控制反转(Inversion of Control ,IoC)和面向切面(AOP)的容器框架.它的主要目的是简化企业开发.. PersonDaoBean 是在应用内部创建及维护的. 所谓控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的.

Spring定时

- - 行业应用 - ITeye博客
spring的定时任务配置分为三个步骤:. . . . . .

简单Spring+hessian

- - Web前端 - ITeye博客
简单的Spring+hessian. dist\modules里面的 spring-webmvc.jar . lib\caucho 里面的hessian-3.1.3.jar. 里面有个接口interface:. 建立一个model层:(实现Serializable接口). 在WEB-INF下面创建一个remoting-servlet.xml:.

Spring MVC 和 Struts2

- - CSDN博客架构设计推荐文章
Web层面的框架学习了三个Struts1和2,SpringMVC,那他们之间肯定存在一个优劣和适用的环境,Struts1和2的异同点我已经做过对比《 Struts1和Struts2》,这篇将对比下Struts2和SpringMVC的异同,下面数据基本来源于网络,本人是搜集整理所得,供大家参考. 一个项目使用什么样的技术,决定的因素很多,我所能想到的有:对系统的性能、开发的效率、团队学习的成本、业务场景等,下面尽量从这几个方面入手,来分析比较下他们之间存在的优劣.