Spring当中的名称装配和类型装配有什么区别

小编 391

Spring当中的名称装配和类型装配区别在于:名称装配根据bean对应的id进行属性注入,即在默认情况下,bean的id值是类名称首字母小写;类型装配,则是寻找一个与该属性类型相同的bean。

1.名称装配

在Spring中,名称装配根据bean对应的id进行属性注入,即在默认情况下,bean的id值是类名称首字母小写。

“按名称自动装配”是指,如果一个bean的名称与其他bean属性的名称是一样的,那么将自动装配它。例如,如果“customer” bean公开一个“address”属性,Spring会找到“address” bean在当前容器中,并自动装配。如果没有匹配找到,那么什么也不做。使用按名称启用自动装配,不必再声明属性标记。只要在“address” bean是相同于“customer” bean 的“address”属性名称,Spring会自动装配它。

2.类型装配

类型装配即设置autowire属性为byType,那么Spring会自动寻找一个与该属性类型相同的Bean,注入进来。使用byType首先需要保证同一类型的对象,在spring容器中少数,即必须保证配置文件中所有bean的class属性的值是少数的,若不少数会报不少数的异常。

延伸阅读

spring中实现自动装配的方式是什么

spring中实现自动装配的方式有两种,一种是通过xml文件,另一种是通过注解。自动装配是使用spring满足bean依赖的一种方法,spring会在应用上下文中为某个bean寻找其依赖的bean。

1.通过xml自动装配

在xm的lbean标签中加入一个属性autowire设置其属性即可。通过xml文件实现自动装配的缺点:首先,在Bean配置文件里设置 autowire属性进行自动装配将会装配Bean的所有属性,然而若只希望装配个别属性时,autowire属性就不够灵活了;其次,autowire属性要么根据类型自动装配,要么根据名称自动装配,不能两者兼而有之。

2.通过注解实现自动装配

可以在实体类的对应属性上添加@Autowired注解,也可以在对应属性的set方法上添加@Autowired注解,这两种方式都实现自动装配。使用@Autowired甚至可以省略bean属性对应的set方法。

使用@Autowired是先通过类型(byType)进行自动装配,如果同一个类型(bean) 存在多个,再通过名字(byName)进行自动装配,如果还找不到符合的则报错。

@Qualifier注解可以和@Autowired搭配使用,@Qualifier指定需要装配的bean的id,而不是使用属性名。

@Resource先通过名字byName进行自动装配,失败的话,再通过类型byType进行自动装配,如果还是装配失败则报错。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部