`

部分类不需要注解启作用

阅读更多

 <转>          

     Spring applicationContext.xml的<context:component-scan>標籤用途比我想像的還要實用。而且後來才知道,有了<context:component-scan>,另一個<context:annotation-config/>標籤根本可以移除掉,因為被包含進去了。原本我survery Spring3通常只配置成<context:component-scan base-package="com.foo.bar"/>,意即在base-package下尋找有@Component和@Configuration的target Class。而現在如下的飯粒:

 

Java代码  收藏代码
  1. <context:component-scan base-package="com.foo" use-default-filters="false">  
  2.     <context:include-filter type="regex" expression="com.foo.bar.*Config"/>  
  3.     <context:include-filter type="regex" expression="com.foo.config.*"/>  
  4. </context:component-scan>  

  <context:component-scan>提供兩個子標籤:<context:include-filter>和<context:exclude-filter>各代表引入和排除的過濾。而上例把use-default-filters屬性設為false,意即在base-package所有被宣告為@Component和@Configuration等target Class不予註冊為bean,由filter子標籤代勞。
  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

 

 

  custom org.example.MyTypeFilter Spring3新增自訂Type,實作org.springframework.core.type.TypeFilter

  所以上例用的regex就有個語病,com.foo.config.* 可以找到com.foo.config.WebLogger,但也可以找到com1fool2config3abcde,因為小數點在Regex是任意字元,是故要用\.把小數點跳脫為佳。(2010/3/15補充:但要使用\.方式,其use-default-filters不能為false,否則抓不到,感覺是Bug)
  Spring3提供豐富的Filter支援,有益配置策略,不需面臨Configuration Hell,比如Regex的com\.foo\.*\.action\.*Config,這樣就可以找到com.foo package下所有action子package的*Config的target class。
  2010/3/18補充:後來在AppConfig前忘了加@Component,AppConfig內尚留有@Bean,奇怪的是還是能work。我猜有加@Bean的method的class,若沒特別註解AppConfig是@Repository、@Service還是@Configuration,一律被Spring3視為@Component。

 

<!-- 采用注解的方式注入 -->

<context:component-scan base-package="com.hupun.pay" >

   <context:exclude-filter type="regex" expression="com.hupun.pay.service.*"/>

</context:component-scan>

 

分享到:
评论

相关推荐

    莱昂氏UNIX源代码分析(全面剖析unix)PDF

    17.2 一个类超高速缓存存储 309 17.3 clrbuf(5038) 309 17.4 incore(4899) 310 17.5 getblk(4921) 310 17.6 brelse(4869) 310 17.7 binit(5055) 311 17.8 bread(4754) 312 17.9 breada(4773) 312 17.10 bwrite(4809)...

    RationalEdge:度量项目的健康性,第2部分

    第1部分介绍了作为评估项目全面状况机制的度量的概念,我还描述了可以帮助您在先启阶段评估项目全面状况的特殊度量方法。在这个系列的第2部分中,我专注于开发工作中的主流部分的度量方法:即详细精化和构建阶段

    QK超级Ping.zip

    #字符'#'代表注释,程序不做解析 #配置文件可以直接使用记录本或其它文本编辑软件进行编辑 #窗口标签名称;窗口执行命令 如:启控;ping www.qkcon.net -t #前部分表示窗口显示标签,分隔符为';’ (此段可以为空) #后...

    莱昂氏UNIX源代码分析

    17.2 一个类超高速缓存存储 309 17.3 clrbuf(5038) 309 17.4 incore(4899) 310 17.5 getblk(4921) 310 17.6 brelse(4869) 310 17.7 binit(5055) 311 17.8 bread(4754) 312 17.9 breada(4773) 312 17.10 bwrite(4809)...

    QuickAlarm快速闹钟 V1.2 修正版

    说下指定定时中的每年选项,这个选项适合定时生日或纪念日的朋友,先设置好起始年,再打上每年选项的勾,闹钟注释的内容中第一个"%d"的标志将被转换成当前年到您设置的起始年的差值,如:设为1982年,注释为"%d周岁...

    [数据库设计]超市管理系统设计.doc

    汉语编程系统出现错误,将会产生不 可遇见的问题,热启,整个终端程序就会再启动;程序出现错误,重新装载,若仍有错 ,按照提示逐渐装载。 3.6.2 保密性 本软件作为超市管理辅助设备,它的规模比较小,不需要保密...

    数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    易语言程序免安装版下载

    以前编译好的模块(.ec)甚至不需要重新编译即可直接支持静态编译。  支持库开发框架调整是扩展性调整,比较好的做到了向前向后兼容。即,新版支持库可被旧版易语言或易程序使用,旧版支持库也可被新版易语言或易程序...

    学籍管理系统软件设计说明书

    汉语编程系统出现错误,将会产生不可遇见的问题,热启,整个终端程序就会再启动;程序出现错误, 重新装载,若仍有错,按照提示逐渐装载。 3.10.2 保密性 本软件作为教学管理辅助设备,它的规模比较小,不需要保密...

    tools:MySQL,Oracle,Shell等工具。此脚本是通过工作收集的

    工具-Robin Wen提供 项目总结 MySQL,Oracle和Shell的工具。 该脚本是通过工作收集的。 您可能会通过脚本获得大量有用的技能。... 文档版本为2.1 ,文档名称为Tools-by Robin Wen ,注释为Add nginx的启

    自由拖动图标源码.zip

    在adnroid应用中大部分都会用到listview,这个源码就是演示了listview的一些场见用法 为了演示方便本例子里面的数据都是使用的模拟数据,此外该源码中还有开机自启的功能和打电话的功能希望可以帮到大家,项目比较...

    [数据库设计]超市管理系统设计

    汉语编程系统出现错误,将会产生不可遇见的问题,热启,整个终端程序就会再启动;程序出现错误,重新装载,若仍有错,按照提示逐渐装载。 3.6.2 保密性  本软件作为超市管理辅助设备,它的规模比较小,不需要保密...

    Android例子源码适合新手学习的listview使用

    本例子是一个简单的可以自由拖动图标的例子源码,在adnroid应用中大部分都会用到listview,这个源码就是演示了listview的一些场见用法 为了演示方便本例子里面的数据都是使用的模拟数据,此外该源码中还有开机自启的...

    Android例子源码适合新手学习的listview使用源码.zip

    本例子是一个简单的可以自由拖动图标的例子源码,在adnroid应用中大部分都会用到listview,这个源码就是演示了listview的一些场见用法 为了演示方便本例子里面的数据都是使用的模拟数据,此外该源码中还有开机自启的...

    Oracle8i_9i数据库基础

    第一部分 Oracle SQL*PLUS基础 23 第一章 Oracle数据库基础 23 §1.1 理解关系数据库系统(RDBMS) 23 §1.1.1 关系模型 23 §1.1.2 Codd十二法则 24 §1.2 关系数据库系统(RDBMS)的组成 24 §1.2.1 RDBMS 内核 24...

    xmljava系统源码-renren-fast:基于renren-fast开源框架的,二次开发搭建的性能、接口测试平台,同时集成三方工具的启停

    灵活的权限控制,可控制到页面或按钮,满足绝大部分的权限需求 页面交互使用Vue2.x,极大的提高了开发效率 完善的代码生成机制,可在线生成entity、xml、dao、service、html、js、sql代码,减少70%以上的开发任务 ...

    数据库.txt

    大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。 数据库管理系统是数据库...

    第一章数据库的简介.docx

    大部分DBMS提供数据定义语言DDL(Data Definition Language)和数据操作语言DML(Data Manipulation Language),供用户定义数据库的模式结构与权限约束,实现对数据的追加、删除等操作。 数据库管理系统是数据库...

    开涛高可用高并发-亿级流量核心技术

    第1部分概述 1 1 交易型系统设计的一些原则 2 1.1 高并发原则 3 1.1.1 无状态 3 1.1.2 拆分 3 1.1.3 服务化 4 1.1.4 消息队列 4 1.1.5 数据异构 6 1.1.6 缓存银弹 7 1.1.7 并发化 9 1.2 高可用原则 10 1.2.1 降级 10...

Global site tag (gtag.js) - Google Analytics