Java Spring @scope 装饰器

发布于 2024-10-12 14:58:29 字数 1010 浏览 6 评论 0

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

月下凄凉

暂无简介

0 文章
0 评论
22 人气
更多

推荐作者

我们的影子

文章 0 评论 0

素年丶

文章 0 评论 0

南笙

文章 0 评论 0

18215568913

文章 0 评论 0

qq_xk7Ean

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文