在spring reference documentation
中第2.3节使用场景,有一个类似的段落
有时情况不允许您完全切换到其他框架。春天 框架呢 不 强迫你使用其中的一切;它不是 全有或全无 解。现有 使用Struts,Tapestry,JSF或其他UI框架构建的前端可以与Spring集成 基于中间层,允许您使用Spring事务功能。你只需要连接你的电话 使用ApplicationContext的业务逻辑 并使用WebApplicationContext 集成 您的网络图层。
现在我无法理解最后一句话。我们如何使用ApplicationContext连接业务逻辑并使用WebApplicationContext与Web层集成。我们怎样才能做到这一点?他们谈论的网络层是否包含控制器和jsps?
据我记得,如果我们需要一个类中的任何对象,我们只需自动装配它们,而spring将完成其余的工作。
有人可以提供一些例子说明。我刚刚开始学习春天,请原谅我的无知。
如果提出类似的问题,请有人指出我正确的方向
答案 0 :(得分:1)
您可以设置两个甚至三个不同的项目或模块,每个项目或模块都有自己的上下文。例如,WebApplicationContext的Web项目,它呈现视图并调用业务方法,即从业务层使用restful Web服务。并设置一个单独的项目或模块来处理具有自己的上下文文件和bean的业务。甚至公共项目也计划在Web和业务层之间包含共享bean。
答案 1 :(得分:1)
即使您可以分层次地创建多个不同的上下文,也是可能的。
我将给出两个层次和非层次的答案。我将两者都使用基于java的配置。我将给出两个上下文的答案,但是你可以在很多情况下实现它。
1)非等级
创建两个不同的context.xml
,假设context1.xml
和context2.xml
。 context1.xml应该是这样的:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns=..... some imports >
<context:annotation-config />
<context:component-scan base-package="desiredPackage1" />
<bean id="properties"
class="org.springframework.beans.factory.config.PropertiesFactoryBean">
<property name="locations">
<list>
<value>db.properties</value>
</list>
</property>
</bean>
<context:property-placeholder properties-ref="properties"/>
仅对context2.xml进行更改
<context:component-scan base-package="desiredPackage2" />
然后创建一个Configuration.java
类,如下所示:
public class Config {
public static void main(String[] args) throws Exception {
ApplicationContext desiredContext1 = new ClassPathXmlApplicationContext("file:////...path.../context1.xml");
ApplicationContext desiredContext2 = new ClassPathXmlApplicationContext("file:////...path.../context2.xml");
}
}
现在您有两个不同的上下文,如果您想要分层次地,请更改主方法,如下所示: 的 2)分层式强>
public class Config {
public static void main(String[] args) throws Exception {
ApplicationContext desiredContext1 = new ClassPathXmlApplicationContext("file:////...path.../context1.xml");
String[] congigPath = new String[1];
congigPath[0] = "file:////...path.../context2.xml";
ApplicationContext desiredContext2 = new ClassPathXmlApplicationContext(congigPath,desiredContext1);
}
}
在这种情况下,desiredContext2对象可以看到desiredContext1对象,但desiredContext1对象看不到desiredContext2对象。
如果您想在构建Web应用程序时使用它,请在配置类
中使用此注释@Configuration
@ImportResource("context1.xml", "context2.xml")
public class Config { ....
我希望这会对你有所帮助。