Jetty服务器中嵌入式web应用程序中的Spring作用域



我配置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

到目前为止,我已经找到了一个解决方法,我使用了Jersey和Jetty的组合,并通过Spring配置了所有内容。

此处提供代码:https://github.com/zjor/embedded-jetty/tree/master/jersey-jetty

最新更新