我想创建工厂类。例如是 FooFactory。在 Foo 实例化之前,必须将 FooFacoty 注入(inject) ServletContext 到构造函数中。我有如下片段:
public class FooFactory() {
public static Foo getFoo() {
ctx = //getservlet context
Foo foo = new Foo(ctx);
return foo;
}
}
最佳答案
编辑:您可以使用 ServletContextFactoryBean
.然后,您可以将对此的引用传递给您的工厂(例如,作为方法参数)。像这样
<bean id="servletContext" class="org.springframework.web.context.support.ServletContextFactoryBean"/>
<bean id="foo" class="FooFactory" factory-method="getFoo">
<constructor-arg index="0" ref="servletContext"/>
</bean>
然后你改变FooFactory.getFoo
到
public static Foo getFoo(ServletContext ctx) {
Foo foo = new Foo(ctx);
return foo;
}
据我所知,没有直接的方法,但您可以通过实现 ServletContextAware 或 ApplicationContextAware 间接实现。
<罢工> This article描述了细节。
关于java - 在spring中获取工厂类的servletcontext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3114703/