Spring依赖注入

2021-04-25  本文已影响0人  LHZ_123

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的原则,查找指定的类、实现类或子类,找不到或是找到多个,都会抛出异常。

上一篇下一篇

猜你喜欢

热点阅读