Spring依赖注入
@Resource
是java自带的注解,有两个属性name 和 type,Spring支持使用@Resource来注入。
@Resource的用法
1、加到类的属性字段上,默认会使用反射机制来实现注入;
2、原则上要加到类的属性set方法上。
@Resource默认的name和type
1、加到类的属性字段上,默认的name是属性名称,默认的type是属性类型
2、加到类的属性set方法上,默认的name是方法名去掉set后将其首字母小写 或 方法的参数名称(2个有一个存在即可),默认的type就是set方法的参数类型。
@Resource注入原则
1、都不显示指定时,默认先按照byName,再按照byType来查找类并注入
2、显示指定了name,则只会按照byName查找类并注入
3、显示指定了type,则只会按照byType查找类并注入
4、都指定时,则查找同时满足byName和byType的类并注入
byName的原则,查找beanId等于指定的名称的bean,找不到则抛出异常。
byType的原则,查找指定的类、实现类或子类,找不到或是找到多个,都会抛出异常。
@Service、@Component、@Configuration、@Repository等注解,如果没有显示指定beanId,默认的beanId为类名首字母小写。
@AutoWired
是spring提供的注解,有一个属性required,表示注入时如果bean不存在是否允许。
(默认是true表示不允许为空,否则报错。)
@AutoWired的用法
1、加到类的属性字段上,默认会使用反射机制来实现注入;
2、原则上要加到类的属性set方法上。
@AutoWired的name和type
1、加到类的属性字段上,默认的name是属性名称,默认的type是属性类型
2、加到类的属性set方法上,默认的name是方法的参数名称,默认的type就是set方法的参数类型。
@AutoWired注入原则
默认先按照byType查找类并注入,再按照byName查找类并注入。
byName的原则,查找beanId等于指定的名称的bean,找不到则抛出异常。
byType的原则,查找指定的类、实现类或子类,找不到或是找到多个,都会抛出异常。
网友评论