@Autowired 知识点

---------------  @Autowired 知识点  -------------------
1、 <context:component-scan>还会自动注册AutowiredAnnotationBeanPostProcessor实例,
该实例可以自动装配具有@Autowired,@Resource和@Inject注解的属性

2、 @Autowired可以修饰类、字段,还可以修饰setter方法,要在xml文件中配置好bean,才能自动装配

@Autowired
private UserService userService;

private Address a1;
@Autowired
public void setA1(Address a1) {
this.a1 = a1;
}

3、 当@Autowired找不到bean时,会抛出异常,中断程序。设置@Autowired(required=false),
会给变量赋一个null值,程序就不会中断了。如果bean存在的话,还是照常实例化bean

4、 默认情况下,当IOC容器里存在多个类型兼容的Bean时(即多态),通过类型的自动装配(@Autowired)将无法工作,
此时可以在@Qualifier注解里提供Bean的名称,@Qualifier("xml中bean的名称(注意:大小写敏感!!)")。Spring允许对方法的参数标注@Qualifier以
指定注入的Bean的名称。
或者,给@XXX注解添加 (value="指定bean名称"),然后添加@Qualifier("同一个bean名称"),也可以解决这个问题
@XXX表示:@Component、@Controller、@Service、@Repository

比如Animal接口有两个实现类Dog类和Cat类,这时则需要指定@Qualifier("cat")或者@Qualifier("dog")

@Autowired
@Qualifier("xml中的bean的名称(注意:大小写敏感!!)")
private Cat cat;

// 以下两种写法效果同上


private Cat cat;
@Autowired
@Qualifier("cat")
public void setUserRepository(Cat cat) {
this.cat = cat;
}


// 这种写法常见于SpringMVC
private Cat cat;
@Autowired
public void setUserRepository(@Qualifier("cat") Cat cat) {
this.cat = cat;
}


-----------------------------------------------------------------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值