使用@Autowired注入两个相同类型的不同实例

时间:2014-09-08 14:21:04

标签: java spring autowired

我有以下课程:

@Component
public class SearchComponent {
}

它被注入到其他类的两个字段中:

@Autowired
private SearchComponent errorSearch;

@Autowired
private SearchComponent successSearch;

默认行为是将相同的实例注入两个字段,这种情况正在发生,但我想要的是errorSearchsuccessSeach是不同的实例。

可以这样做吗?怎么办呢?

1 个答案:

答案 0 :(得分:2)

只需将@Scope注释添加到组件类:

@Component
@Scope("prototype")
public class SearchComponent {
}

这样可以避免将SearchComponent类用作 singleton (Spring bean范围的默认值),而是为每个{{1}创建一个新的类实例变量。

看看:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-scopes