首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >弹簧注入通过限定符注入空而不是对象

弹簧注入通过限定符注入空而不是对象
EN

Stack Overflow用户
提问于 2018-07-14 16:15:53
回答 1查看 1.3K关注 0票数 1

这个简单的代码应该通过Java实现一个朴素的工厂。但是,结果是null指针,因为Human没有被注入对象(因此它保持为空)。

我做错什么了?

谢谢

配置

代码语言:javascript
运行
复制
@Configuration
 public class Config {

    @Bean(name = "Male")
    public Human getMale(){
        return new Male();
    }
    @Bean(name = "Female")
    public Human getFemale(){
        return new Female();
    }
}

人类

代码语言:javascript
运行
复制
@Service
public interface Human {
    String getName();
    void setName(String nm);
}

男性和女性实施

代码语言:javascript
运行
复制
@Service
public class Female implements Human{

    private  String name;

    public Female() {
        this.name = "Alice";
    }
    public String getName() {
        return name;
    }
    public void setName(String nm) {
        this.name=nm;
    }

}

@Service
public class Male implements Human{

    private  String name;

    public Male() {
        this.name = "Bob";
    }
    public String getName() {
        return name;
    }
    public void setName(String nm) {
        this.name=nm;
    }

}

人工厂,这是类朴素的工厂设计模式与弹簧的实现。

代码语言:javascript
运行
复制
@Service
public class HumanFactory {

    @Qualifier("Male")
    Human Male;

    @Qualifier("Female")
    Human female;

    public Human getMale() {
        return Male;
    }

    public Human getFemale() {
        return female;
    }

Main

代码语言:javascript
运行
复制
@SpringBootApplication
public class AotSpringMain {

    public static void main(String[] args) {
        ApplicationContext ctx = SpringApplication.run(AotSpringMain.class, args);
        HumanFactory humanFactory = (HumanFactory)ctx.getBean("humanFactory");
        System.out.println(humanFactory.getMale().getName());

    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-14 16:34:37

@Qualifier不支持字段的自动装配。

该条规定如下:

此注释可在字段或参数上用作自动装配时候选bean的限定符。

因此,这些:

代码语言:javascript
运行
复制
@Qualifier("Male")
Human Male;

@Qualifier("Female")
Human female;

应:

代码语言:javascript
运行
复制
@Autowired
@Qualifier("Male")
Human Male;

@Autowired
@Qualifier("Female")
Human female;
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51341206

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档