在Spring中申明bean,一般情况是在XML中用<bean id="" class="">标签来指定一个类并为其取一个id。但是这样效率很低,Spring提供了自动检测并申明bean的方法,讲解如下:
一、自动检测并申明bean的步骤:
1、用<context:component-scan base-package="com.springinaction.springidol"></context:component-scan>替换<context:annotation-config/>。前者包含了后者所有功能,而且还提供了bean的检测和自动申明功能。其中,base-package指定要检测的包。
2、在要定义为bean的类定义前加上相应的标注:
@component public class Guitar{ ...... }
在程序运行的时候,Spring就可以自动检测到该类并把其申明为bean。bean的默认命名为guitar,也就是将类名第一个字母小写,如果你的类名为GuitarInstrument,则bean名字为guitarInstrument,后面的字母大小写不变。
当然,我们可以自定义bean的名称:
@component("guitar1") public class Guitar{}
则bean的名字为guitar1。
@component标注表示将该类申明为Spring组件,还有其他几种类型的标注:
二、批量检测和申明bean的方法
一中的方法里描述的是,为每个需要被申明为bean的类添加注解,使Spring能够检测出该类。但是有时候,我们需要批量检测,比如有一个Instrument接口,我们要把所有实现了该接口的类申明为bean,我们可以使用过滤器:
过滤器有两种:一种是包含过滤器<context:include-filter>,指定需要包含的类,另一种是剔除过滤器<context:exclude-filter>,指定不要包含的类。用法:
expression参数指定要包含的类,type指定类型,比如包含expression中的类、注解等,
Spring中自动检测并申明bean