Spring注解@Autowired使用

  • @Autowired注解自动装配原理
@Data
@Service
public class BookService {
	
	@Qualifier("bookDao3")
    @Autowired(required = false)
    private BookDao bookDao;
	
}
 /**
     * 当容器中同时有多个BookDao对象时,在进行自动装配时,优先装配标注了@Primary注解的bean
     * @return
     */
    @Primary
    @Bean
    public BookDao bookDao2(){
        return new BookDao();
    }

BookService中需要装配BookDao,则按照以下原理来装配。

1.默认优先按照类型去容器中找
2.如果相同的类型有多个,则按照属性名去容器中找,如果容器中有多个 BookDao,则按照属性名bookDao当做id去容器中找。
3.@Qualifier(“bookDao2”) 即使属性名为bookDao,但是用了该注解,spring就会找bookDao2这个bean
4.@Autowired默认是必须装配好该组件的,如果容器中找不到会报错,通过@Autowired(required = false)
指定当容器中找不到该bean时,允许该属性为null
5.当容器中同时有多个BookDao对象时,在进行自动装配时,优先装配标注了@Primary注解的bean。

@Autowired作用的位置

1. 作用于成员变量上
 	@Autowired
    private Car car;
2. 作用与构造方法和set方法,参数的值会自动从容器中获取
 @Autowired
    public Boss(Car car){
        this.car = car;
    }

    @Autowired
    public void setCar(Car car) {
        this.car = car;
    }
3. 作用于形参位置上
在给容器中使用@Bean添加组件时,如果bean需要参数,则参数的值可以从容器中获取。

注意:当@Autowired 标注在构造方法,set方法和形参位置时,@Autowired 可以省略

@Bean
    public Boss boss(@Autowired Car car){
        Boss boss = new Boss(car);
        return boss;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值