【问题标题】:Spring web Dependency Injection(IOC) and the ServletContextListenerSpring Web 依赖注入(IOC)和 ServletContextListener
【发布时间】:2009-11-11 13:18:11
【问题描述】:
我的代码结构为 Spring bean 和它们之间的依赖关系。这只是代码的一小部分,因为其余的是 'legacy' 代码。
此时,我想在扩展javax.servlet.ServletContextListener 的现有'legacy' 类中对其中一个bean 执行操作。此类初始化应用程序,其代码仅被调用一次。
我最好的做法是什么?
谢谢!
【问题讨论】:
标签:
spring
web-applications
initialization
startup
【解决方案1】:
您可以通过这种方式获取 Spring Context:
WebApplicationContext ctx = WebApplicationContextUtils.getRequiredWebApplicationContext(servletContextEvent.getSevletContext())
然后你可以调用 ctx.getBean("name"); (还有更多 - 检查 WebApplicationContext 及其父级的 javadocs)
【解决方案2】:
Spring bean 扩展 ServletContextListener 并没有任何意义,因为 bean 不监听 servlet 上下文。如果您想使用与应用程序一起初始化和销毁的 bean,那么在 Spring 中有很多方法可以做到这一点。请参阅文档的this part。