(十二)Beans自动装配(Auto-Wiring)

来源:互联网 发布:医保控费软件 编辑:程序博客网 时间:2024/05/18 02:44
Spring容器提供了不使用<constructor>和<property>自动装配协作的beans的关系的功能,这样可以帮助你在编写基于Spring的大型应用时减小XML配置的大小。
五种自动注入的模式:
no:这是一种默认的设置方式,即不自动装配属性,而是使用显示的方式来明确指定属性的引用。也就是使用<property>标签来指定需要引用的属性。
byName:通过属性名称来自动装配所需要的属性。如果beans的标签中指定了autowire的属性值为“byName”,会被Spring容器发现。Spring容器会尝试在配置文件中查找一个名称相同的已经注册的beans来自动装配。(我们可以通过设置autowire的值为byName来自动注入需要的属性,但是这种方式需要注意的是,属性的名称必须与已经注册过的bean的名称一致;)
byType:通过属性的数据类型来自动装配所需要的属性。如果beans的标签中指定了autowire的属性值为“byType”,会被Spring容器发现。容器会尝试在配置文件中匹配一个与所需类型一致的已经注册的bean,但是如果存在多个符合要求的bean,就会严重的异常信息抛出。
constructor:这个与byType像是,但是该属性值指定的参数类型是由构造器的参数决定的。如果没有符合要求的bean存在,则会抛出严重的错误。
default:指定该参数值之后,容器会首先使用constructor的方式自动装配,如果不起作用,则会使用byType的方式自动装配。

可以通过byType和constructor的方式来自动装配数组和集合类型。

自动装配的局限性:
如果不经常使用自动装配功能,这种方式可能会给开发人员带来迷惑。虽然,自动装配功能能够显著减少配置属性和构造器参数的工作量,但是我们在使用该功能之前还是要权衡一下该功能的局限性和缺点:
被覆盖的可能性:如果用了自动装配的同时又指定了<constructor-arg>和<property>配置,那么自动装配功能将会被覆盖;
不能自动装配简单的数据类型:不能自动装配简单数据类型,如原生类型(int,float,double,boolean等原生类型),String类型和类。
本质模糊:自动装配功能没有显示指定的方式明确,所以应该竟可能的使用显示指定的方式。

0 0
原创粉丝点击