署名付きメソッドを使用してプロパティBeanを挿入することは可能ですか?set
で開始しませんか?春:非セッターメソッドでプロパティを挿入する方法は?
具体的には、Springを使用して埋め込みJettyインスタンスを構成しようとしています。addServlet()
メソッドを使用してサーブレットBeanを注入できる必要があります。
署名付きメソッドを使用してプロパティBeanを挿入することは可能ですか?set
で開始しませんか?春:非セッターメソッドでプロパティを挿入する方法は?
具体的には、Springを使用して埋め込みJettyインスタンスを構成しようとしています。addServlet()
メソッドを使用してサーブレットBeanを注入できる必要があります。
私はJetty/Tutorial/Embedding Jetty documentationを見ています。私は3210と呼んでいると思います。あなたは、いくつかの選択肢があります。
@Configuration
私のお気に入りのアプローチ(3.0以降)。 Javaを使用してすべてを構成できます!
@Configuration
public class Jetty {
@Bean(initMethod = "start")
public Server server() {
Server server = new Server(8080);
server.setHandler(context());
return server;
}
@Bean
public ServletContextHandler context() {
ServletContextHandler context = new ServletContextHandler(ServletContextHandler.SESSIONS);
context.setContextPath("/");
context.addServlet(servlet(), "/*");
return context;
}
@Bean
public ServletHolder servletHolder() {
return new ServletHolder(helloServlet());
}
@Bean
public HelloServlet helloServlet() {
return new HelloServlet();
}
}
ServletContextHandler
クラスを継承またはラップすることができますを飾ります。もちろん、余分なクラスが必要ですが、JettyクラスはSpringに優しいクラスになります。あなたはそのようなラッパーを公開することさえできますか?
MethodInvokingFactoryBean
それはあまりにも低レベル思えるように私はこのアプローチを好みません。たくさんの、おかげで
<bean id="javaVersion" class="org.springframework.beans.factory.config.MethodInvokingFactoryBean">
<property name="targetObject" ref="servletContextHandler"/>
<property name="targetMethod" value="addServlet"/>
<property name="arguments">
<list>
<ref bean="yourServlet"/>
</list>
</property>
</bean>
ちょうど春のファイル桟橋7に適応それはあなたにContextHandlerのを追加することが可能です...
<bean id="contexts"
class="org.eclipse.jetty.server.handler.ContextHandlerCollection" />
<context:property-placeholder location="src/main/resources/ws.properties" />
<!-- Manually start server after setting parent context. (init-method="start") -->
<bean id="jettyServer" class="org.eclipse.jetty.server.Server"
destroy-method="stop">
<property name="threadPool">
<bean id="ThreadPool" class="org.eclipse.jetty.util.thread.QueuedThreadPool">
<property name="minThreads" value="10" />
<property name="maxThreads" value="50" />
</bean>
</property>
<property name="connectors">
<list>
<bean id="Connector" class="org.eclipse.jetty.server.nio.SelectChannelConnector">
<property name="port" value="8181" />
</bean>
</list>
</property>
<property name="handler">
<bean id="handlers" class="org.eclipse.jetty.server.handler.HandlerCollection">
<property name="handlers">
<list>
<ref bean="contexts" />
<bean id="defaultHandler" class="org.eclipse.jetty.server.handler.DefaultHandler" />
<bean class="org.eclipse.jetty.servlet.ServletContextHandler"
p:contextPath="/${ws.context.path}">
<property name="sessionHandler">
<bean class="org.eclipse.jetty.server.session.SessionHandler" />
</property>
<property name="servletHandler">
<bean class="org.eclipse.jetty.servlet.ServletHandler">
<property name="servlets">
<list>
<bean class="org.eclipse.jetty.servlet.ServletHolder"
p:name="spring-ws">
<property name="servlet">
<bean
class="org.springframework.ws.transport.http.MessageDispatcherServlet" />
</property>
<property name="initParameters">
<map>
<entry key="contextConfigLocation" value="classpath:/spring-ws-context.xml" />
</map>
</property>
</bean>
</list>
</property>
<property name="servletMappings">
<list>
<bean class="org.eclipse.jetty.servlet.ServletMapping"
p:servletName="spring-ws" p:pathSpec="/*" />
</list>
</property>
</bean>
</property>
</bean>
<bean class="org.eclipse.jetty.server.handler.RequestLogHandler" />
</list>
</property>
</bean>
</property>
</bean>
グレート答え:基本的には、任意の引数を指定して任意のメソッドを呼び出してBeanを作成します。救助にJava Config! – HolySamosa