【问题标题】:Inject specific instance into specific class将特定实例注入特定类
【发布时间】:2017-12-03 00:27:35
【问题描述】:

是否可以使用 Spring Context 确定哪个类要注入我的 bean?我正在为我的 bean 使用仅限 Java 的配置。

假设我有这个 bean:

@Bean
@Scope("prototype")
public Helper helper() {
    return new Helper();
}

现在我想知道这个实例将被注入到哪个类中,以注入一个用于该类的特殊实例。

我想做这样的事情,示例伪代码:

@Bean
@Scope("prototype")
public Helper helper(Class injectInto) {
    if (injectInto == SomeClass.class) {
        return new Helper("Only for SomeClass!");
    }
    return new Helper();
}

bean 应该像往常一样被注入,例如:

@Autowired
private Helper helper;

【问题讨论】:

    标签: java spring dependency-injection


    【解决方案1】:

    为此目的使用@Qualifier 和@Bean(name="") 注释。关于如何使用它有很多在线资源。

    @Bean(name="normal")
    @Scope("prototype")
    public Helper helper(Class injectInto) {
        return new Helper();
    }
    
    @Bean(name="special")
    @Scope("prototype")
    public Helper helper(Class injectInto) {
        return new Helper("Only for SomeClass!");
    }
    

    SomeClass 中的自动装配:

    @Autowired
    @Qualifier(value = "special")
    private Helper helper;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多