将特定实例注入特定类

时间:2017-12-03 00:27:35

标签: java spring dependency-injection

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

假设我有这个豆子:

@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();
}

应该一如既往地注入豆子,例如:

@Autowired
private Helper helper;

1 个答案:

答案 0 :(得分:0)

为此目的使用@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;