理解spring中的自定义范围

理解spring中的自定义范围,spring,scope,Spring,Scope,我需要帮助理解spring中的自定义范围,我阅读了参考手册,对它有一些了解,但困扰我的问题是何时实际调用我的scope接口实现的get方法,尽管我的理解是如果定义了scope=myscope的bean然后Spring在我的作用域实现上调用get方法来检索对象。但当我遇到一个例子时,我注意到一些奇怪的事情 在执行以下语句时未调用get方法 Object targetBean = getApplicationContext().getBean(task.getBeanName()); 但在执行以下

我需要帮助理解spring中的自定义范围,我阅读了参考手册,对它有一些了解,但困扰我的问题是何时实际调用我的scope接口实现的get方法,尽管我的理解是如果定义了scope=myscope的bean然后Spring在我的作用域实现上调用get方法来检索对象。但当我遇到一个例子时,我注意到一些奇怪的事情

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

Object targetBean = getApplicationContext().getBean(task.getBeanName());
但在执行以下语句时

ReflectionUtils.invokeMethod(targetMethod, targetBean, arguments);
有人能帮我解释更多关于自定义范围实现和get方法调用的信息吗


PS:在相关示例中,自定义范围与Threadlocal一起使用。。如果有人能为我提供一个customscope与thread local的工作示例链接,那将是一个很大的帮助

我过去曾广泛使用customscope将有状态对象注入singleton服务

我的理解是,代理包装了自定义作用域的bean,并且代理在bean的方法调用时从作用域检索bean

另见

那么你的情况呢

Object targetBean = getApplicationContext().getBean(task.getBeanName());
targetBean
将作为代理

ReflectionUtils.invokeMethod(targetMethod, targetBean, arguments);

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

仅供参考,Spring深入文章或书籍的链接已失效。我不知道7年后这有多重要。