我有两个spring上下文:"webapplication“上下文和"core”上下文。上下文"core“在服务器启动时初始化,并附加到保存该上下文的Singleton类。" webapplication“上下文是在webapplication启动时初始化的。
我希望将bean依赖项从一个上下文中的bean注入到另一个上下文中(双向访问)。The应用程序bean将是“会话”作用域bean。
我正在测试这个概念证明: webapp bean --> (取决于)核心bean --> (取决于另一个) webapp bean。
在webapplication上下文初始化时,我可以将“核心”ThreadLocal注入到"webapplication“bean(访问单例的BeanFactory ),但是不知道如何做相反的事情;因为保存WebApplicationContext的Spring还没有初始化。
问题是。这是我想要做的事情吗?如果答案是“是”,你会怎么做?
先谢谢你。
编辑:
我意识到我做错了什么。事实上,我试图在错误的时间向服务层注入会话bean的依赖项;即,在web初始化时,当我没有当前用户会话时。
发布于 2012-07-26 01:27:45
在我看来,这是一个架构问题,而不是一个技术问题(当然也不是Spring)。您在核心上下文和web上下文之间的分离非常好。前者处理业务流程,而后者负责表示,可能是一些API。
从web (表示、访问)到核心的依赖是可以理解的,也是必需的-毕竟,您正在构建一个基于业务例程的接口。这就是spring-mvc默认的工作方式,创建核心上下文的单独的子(web)应用程序上下文。
我很难想象反向依赖的用例。为什么你的业务逻辑依赖于web层?如果您尝试将您的应用程序迁移到不同的表示技术(桌面、移动),该怎么办?你能证明这种反向依赖的原因吗?您所说的会话bean是什么意思
双向依赖,以及持有类加载器对应用程序上下文的广泛引用的静态单例,应该表明设计有问题。
https://stackoverflow.com/questions/11654742
复制相似问题