Spring中的bean的byType和byName
byType就是Bean的Class
byName就是Bean的id或name
多个相同类型的bean时:
@Autowired
private Student student;
这里面的byType就是用Student去xml匹配IOC容器的com.tutorialspoint.Student。byName就是用student去IOC容器的id student。显然这是会报错。
@Autowired和@Resource
@Autowired注解由Spring提供,默认按照byType注入,默认情况下必须要求依赖对象存在,如果要允许null值,可以设置它的required属性为false。如果想使用名称装配可以结合@Qualifier注解进行使用
@Autowired
@Qualifier("student2")
private Student student;
@Autowired
@Qualifier("student1")
private Student student;
或
@Autowired
private Student student1;
@Autowired
private Student student2;
@resource注解由J2EE提供,默认按照byName自动注入,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行名称查找。如果注解写在setter方法上默认取属性名进行装配。当找不到与名称匹配的bean时才按照类型进行装配。但是需要注意的是,如果name属性一旦指定,就只会按照名称进行装配。
@resource(name = "student1")
private Student student;
@resource(name = "student2")
private Student student;
或
@resource
private Student student1;
@resource
private Student student2;
如有错误,欢迎评论区指出。