我需要帮助理解春天的自定义范围我通过参考手册并对它有了一些了解,但是问题就在于我的问题是实际调用我的范围界面实现的get方法时我的理解如果定义了一个带有scope = myscope的bean,那么Spring会在我的作用域实现上调用get方法来检索该对象.但是当我遇到一个例子时,我发现了一些奇怪的东西.
在执行以下语句时不会调用get方法
Object targetBean = getApplicationContext().getBean(task.getBeanName());
Run Code Online (Sandbox Code Playgroud)
但是执行以下声明.
ReflectionUtils.invokeMethod(targetMethod, targetBean, arguments);
Run Code Online (Sandbox Code Playgroud)
任何人都可以通过解释有关自定义范围实现和get方法调用的更多信息来帮助我.
PS:在相关示例中,自定义范围与Threadlocal一起使用..如果任何人可以为我提供一个带有本地线程的海关的工作示例链接,那将是一个很大的帮助
小智 3
我过去广泛使用自定义作用域将有状态对象注入到单例服务中。
我的理解是,代理包装了自定义作用域的 bean,并且代理从 bean 方法调用的作用域中检索 bean。
另请参阅Spring 深入
所以在你的情况下
Object targetBean = getApplicationContext().getBean(task.getBeanName());
Run Code Online (Sandbox Code Playgroud)
targetBean
将成为代理
ReflectionUtils.invokeMethod(targetMethod, targetBean, arguments);
Run Code Online (Sandbox Code Playgroud)
调用代理上的方法,该方法调用org.springframework.beans.factory.config.Scope#get
以检索正确的 bean
归档时间: |
|
查看次数: |
1622 次 |
最近记录: |