【发布时间】:2016-04-12 15:49:48
【问题描述】:
我将 Jetty 配置为从 spring 上下文启动 web 应用程序,例如有两种情况:
- 运行 Jetty 的外部上下文
- 由 Spring DispatcherServlet 运行的内部
这里是外部上下文的定义:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="servletHolder" class="org.eclipse.jetty.servlet.ServletHolder">
<constructor-arg name="name" value="dispatcher"/>
<constructor-arg name="servlet" value="org.springframework.web.servlet.DispatcherServlet"/>
<property name="initParameters">
<map>
<entry key="contextConfigLocation" value="classpath:dispatcher-context.xml"/>
</map>
</property>
<property name="initOrder" value="0"/>
</bean>
<bean id="servletHandler" class="org.eclipse.jetty.servlet.ServletHandler">
<property name="servlets">
<array>
<ref bean="servletHolder"/>
</array>
</property>
<property name="servletMappings">
<list>
<bean class="org.eclipse.jetty.servlet.ServletMapping">
<property name="servletName" value="dispatcher"/>
<property name="pathSpec" value="/*"/>
</bean>
</list>
</property>
</bean>
<bean id="contextHandler" class="org.eclipse.jetty.servlet.ServletContextHandler">
<property name="contextPath" value="/spring"/>
<property name="servletHandler" ref="servletHandler"/>
</bean>
<bean class="org.eclipse.jetty.server.Server" init-method="start" destroy-method="stop">
<constructor-arg name="port" value="9999"/>
<property name="handler" ref="contextHandler"/>
</bean>
</beans>
它指的是“内部”的dispatcher-context.xml。
到目前为止,它工作正常,除非我需要将来自外部上下文的 bean 从内部上下文注入控制器的 bean。
有没有办法在外部范围内定义 bean 并将其注入控制器? 它在单元测试或将此服务器用作更大的现有应用程序的一部分时很有用。
完整代码在这里:https://github.com/zjor/embedded-jetty/tree/master/spring-mvc-jetty
【问题讨论】:
标签: spring jetty embedded-jetty