@Autowried的使用

本例的gitee地址:https://gitee.com/swingforyou/spring_framework_exercise.git

1.@Autowried(自动装配)注解的使用场景如下

构造函数(多依赖情况)
成员属性上
任意方法上(包括set方法)

 

2.@Autowried的required属性,表示自动装配的对象是可选的

如下代码演示

package soundsystem;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

@Component
public class DiscPlayer {
    @Autowired
    private Power power;
    @Autowired(required = false)
    private Disc disc;

    public DiscPlayer() {
        super();
        System.out.println("DiscPlayer的无参构造被调用");
    }

    public void play() {
        power.play();
        if (disc != null) {
            disc.play();
        }
    }
}

(注意,在使用时要检查注入对象是否为空,否则会报错)

3.接口的自动装配

如果接口只有一个实现类,可使用接口直接声明,然后使用@Autowried注解即可

如果接口有多个实现类,则有以下几种解决方法:

1.使用首选bean

使用方法:在默认实现类上添加注解@Primary即可,但此解决方法太过局限性

2.使用限定符

使用方法:

现在各个实现类中声明限定符,如下:

//声明限定符
@Qualifier("popularMusic")
public class PopularMusicDIsc implements Disc {
    public void play() {
        System.out.println("播放流行乐。。。。。");
    }
}

再使用限定符

//使用限定符指明实现类
    @Qualifier("popularMusic")
    private Disc disc;

3.通过类id使用限定符

与上一个方法相似,只不过限定符定义的位置如下:

使用方法相同

4.使用Java标准来解决

与上两种类似,使用方法略有不同(这是java标准,不是spring标准)

 

发布了61 篇原创文章 · 获赞 79 · 访问量 7776
展开阅读全文

没有更多推荐了,返回首页

©️2019 CSDN 皮肤主题: 撸撸猫 设计师: 设计师小姐姐

分享到微信朋友圈

×

扫一扫,手机浏览