我有以下课程:

@Component
public class SearchComponent {
}


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

@Autowired
private SearchComponent errorSearch;

@Autowired
private SearchComponent successSearch;


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

有可能这样做吗?怎么做到呢?

最佳答案

只需在组件类中添加@Scope批注:

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


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

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

10-05 21:31