design-patterns - 在不使用Singleton的情况下从非bean对象获取Spring Application上下文

标签 design-patterns spring singleton

我需要从非bean对象获取spring应用程序上下文。在SO的另一个线程中,可接受的答案建议使用单例来获取应用程序上下文。
Getting Spring Application Context

但是使用单例使我的代码更易于耦合和测试,这是许多线程中讨论的常见问题(例如What is so bad about Singletons)

问题是,有没有一种优雅的方法可以在不使用单例的情况下从非bean对象获取应用程序上下文?

最佳答案

总是存在引导问题。对于Web应用程序,通常使用外部servlet过滤器来处理这种情况。

如果不是网络应用程序,则无法解决某种外部单例或 bootstrap 的问题。但;在这里使用单例应该只影响该单个 bootstrap 类的可测试性。在您的代码中,实际上应该只有很少的地方需要以任何显式的方式引用容器。因此,它并没有真正显着增加耦合。

或者换句话说,实际上应该只有很少的非bean对象需要访问spring容器。如果不是这种情况,则可能不是最佳使用spring。并且大多数/所有需要容器的人可能应该只实现BeanFactoryAwareApplicationContextAware

关于design-patterns - 在不使用Singleton的情况下从非bean对象获取Spring Application上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/475785/

相关文章:

java - 用设计模式替换多个 If\Else

java - 实现构建器模式的错误/正确方法是什么?

python - 避免if else来实例化一个类——python

c# - main 之前的静态初始化

spring - 更改 WebFilter 中 ServerWebExchange 响应的正文

Spring Integration Dispatcher 没有 channel 订阅者

ios - Firebase 在启动时随机崩溃

java - 如何动态更改 application.properties 中的参数,以便可以使用新值来触发计划作业

android - 如何在所有 Activity 和 fragment 中使用 MediaPlayer 的单个实例?

java - 编写 JUnit 时如何绕过 Runtime.getRuntime()?