gpt4 book ai didi

spring - 了解 Spring 的自定义范围

转载 作者:行者123 更新时间:2023-12-04 04:32:04 25 4
gpt4 key购买 nike

我需要帮助来理解 Spring 的自定义范围我浏览了引用手册并且对它有一些了解,但困扰我的问题是 当实际上调用了我的范围接口(interface)实现的get方法时尽管我的理解是,如果定义了具有 scope=myscope 的 bean,那么 Spring 会在我的范围实现上调用 get 方法来检索对象。但是当我遇到一个例子时,我发现了一些奇怪的东西。

执行以下语句时未调用 get 方法

Object targetBean = getApplicationContext().getBean(task.getBeanName());

但是在执行以下语句 .
ReflectionUtils.invokeMethod(targetMethod, targetBean, arguments);

任何人都可以通过解释有关自定义范围实现和 get 方法调用的更多信息来帮助我。

PS:在相关示例中,自定义范围与 Threadlocal 一起使用。如果有人可以为我提供带有线程本地的自定义范围的工作示例链接,那将是一个很大的帮助

最佳答案

我过去广泛使用自定义范围将有状态对象注入(inject)单例服务。

我的理解是代理包装了自定义范围的 bean,并且代理从 bean 的方法调用的范围中检索 bean。

另见 Spring Indepth

所以在你的情况下

Object targetBean = getApplicationContext().getBean(task.getBeanName());
targetBean将是代理
ReflectionUtils.invokeMethod(targetMethod, targetBean, arguments);

调用通过 org.springframework.beans.factory.config.Scope#get 调用的代理上的方法检索正确的 bean

关于spring - 了解 Spring 的自定义范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6072764/

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