目录
article
@Bean & @Scope
@Bean & @Scope
@Scope 支持以下几种作用域:
- 基本作用域
- singleton(单例)
- prototype(多例)
- Web 作用域
- reqeust
- session
- globalsession
- 自定义作用域
@Bean
public SyncClient createSyncClient(OtsConfig otsConfig) {
return otsConfig.createSyncClient();
}
通过 @Scope 注解指定作用域:
@Bean
@Scope("prototype")
public SyncClient createSyncClient(OtsConfig otsConfig) {
return otsConfig.createSyncClient();
}
不同作用域的 bean 组合时,使用时的实际作用域可以理解成以最小的作用域为准。
如下例中 OtsService 为单例模式,即使 SyncClient 设置为原型模式,使用时所有 OtsService bean 的调用使用的都是同一个 SyncClient 实例。
如果有别的服务 AnohterService 中也使用了 SyncClient 注入,则这个实例才是另外的一个 SyncClient 实例。
@Service
@Slf4j
@RequiredArgsConstructor
public class OtsServiceImpl implements OtsService {
private final SyncClient syncClient;
}