gpt4 book ai didi

Spring销毁方法和半注入(inject)对象

转载 作者:行者123 更新时间:2023-12-01 13:07:58 25 4
gpt4 key购买 nike

在 Spring ,我经常发现自己在 bean 上使用 init-method 和 destroy-method 属性。我很好奇这些方法的契约。 init-method 属性似乎被称为构建后并且在所有属性都已设置之后。我的问题是 destroy-method 是否具有相同的契约(Contract)。如果 setter 出于某种原因抛出,并且对象没有设置其所有属性,spring 将不会调用 init-method,但我找不到任何关于 spring 在这种情况下调用 destroy-method 的文档。

如果它确实确实必须检查 null,我很好奇其他人在这种情况下会做什么。

最佳答案

我做了一个简单的测试,我发现如果 setter 抛出异常,init 和 destroy 方法都不会被调用。

我相信这是合乎逻辑的做法。不应允许 setter 失败——如果失败,框架将无能为力。对这种错误的唯一 react 是纠正二传手。所以我认为你的问题是无关紧要的。不应允许注入(inject)一半的物体。

如果您知道 setter 可能会抛出异常,您应该捕获它并将引用设置为 null 或执行任何其他适当的操作。

关于Spring销毁方法和半注入(inject)对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1454416/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com