Spring使用多个上下文处理同一个类



我有一个spring-core应用程序,其中有两个用于不同通道的上下文文件,即mobile&网状物

如果我收到来自移动频道的请求,将加载mobile-context.xml如果我收到来自网络频道的请求,web-context.xml将被加载

我有ClassA,它被添加在两个上下文文件中,所以它的加载是Spring的上下文加载概念的两倍,因为两者都是不同的上下文。

不管上下文如何,我都可以加载一次这个ClassA吗?或者我可以在两个上下文中共享ClassA对象吗

创建多个上下文并不是什么新鲜事。您可以通过创建两个ApplicationContext实例来实现这一点。

下面这样的东西就可以了。

ApplicationContext webContext= new ClassPathXmlApplicationContext("web-context.xml");
ApplicationContext mobileContext= new ClassPathXmlApplicationContext("mobile-context.xml");

既然您有两个contexts,您可以随心所欲地使用它们。

若您希望根据设备类型提供不同的业务逻辑,我建议您查看SpringMobile项目。该项目增加了现有的弹簧项目,并能够根据检测到的设备进行设备检测和布线到不同的视图。

这允许您在请求处理级别检测设备,并允许您对不同设备以不同方式处理请求。

这个问题有你可能想要的更多细节。