前边我们讲过了Spring配置文件中为bean实例进行属性注入的细节,即如何为基础数据类型(及其对应封装类型)、String类型、数组、集合(set/list/map/properties)、引用数据类型的属性进行属性注入。下边我们讲一讲Spring框架为配置文件专门设置的一个属性注入的功能:自动装配。
Spring的IOC容器中可以自动的为bean的属性进行装配,只需要我们在bean节点设置autowira属性即可。
自动装配有两种方式:
autowire="byName",根据bean的id及类中的属性名是否一致进行装配,若bean的id和类的setXxx()中的xxx一致才可以自动装配,否则装配不上。
autowire="byType",根据bean的class及类中的属性的类型是否一致进行装配,一致则自动装配,否则不会装配。需要注意的是,若是在配置文件中出现了多个相同的bean的class,那么Spring框架无法区分哪个更合适,所以也就无法自动将bean给其他bean的属性进行装配。
为Bean进行自动装配具有明显的缺点,因为autowire属性时bean节点级别的,所以一个bean中的属性要么全部自动装配,要么都不进行自动装配,不够灵活;且自动装配的方式只能单独使用一种,无法交叉使用,也是不够灵活。所以我们在自己写的代码中当为bean的属性进行注入赋值时,基本不用自动装配的方式。自动装配的方式一般在引入一些其他的第三方框架时才会使用。