Java Spring @scope 装饰器
Spring 支持不同的 scope。不同 scope 在使用上是有差异的,比如 singleton 与 prototype。
- singleton spring 默认采用的 scope,在 Spring 的 IoC 容器中只存在一个对象实例,所有该对象的引用都共享这个实例。该实例从容器启动,并因为第一次被请求而初始化之后,将一直存活到容器退出,也就是说,它与 IoC 容器“几乎”拥有相同的“寿命”。
- prototype 容器每次返回给请求方一个新的实例对象后,就任由这个对象“自生自灭”了。
注意: 当一个 prototype 的 bean A 被 singleton B 的引用时,实际上使用的是同一个实例 A。
@Bean
@Scope(ConfigurableBeanFactory.SCOPE_PROTOTYPE)
public RabbitTemplate rabbitTemplate(ConnectionFactory connectionFactory) {
return new RabbitTemplate(connectionFactory);
}
@Service
@Slf4j
public class TransferDebtService {
@Autowired
private RabbitTemplate rabbitTemplate;
}
上面的代码 PROTOTYPE 就不会起作用。
参考: https://waylau.com/spring-singleton-beans-with-prototype-bean-dependencies/
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
上一篇: CVE-2021-3156 sudo 提权漏洞复现
下一篇: MyBatis 介绍和使用
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论