我正在尝试在 Tomcat 上运行的基于 servlet 的应用程序中使用 PicoContainer。 配置显然在调试中有效,但除非我认为 Servlet 类不是由 construnctor 注入(inject)的,而 neighter 是由 setter 注入(inject)的。 servlet 类不应该被注入(inject)吗?如果没有,我如何在基于 servlet 的应用程序中使用容器?
最佳答案
没有实际注入(inject) servlet 的 IoC 容器。 在您的情况下,它们由 tomcat 实例化。 典型的 Pico 组件是 Controller 、DAO、业务逻辑等。
您实际上可以通过两种方式实现您的网络应用:
1) 发挥 pico 过滤器的作用:您的 Controller 应该是实现生命周期接口(interface)的请求范围组件。因此,此类组件将注入(inject)请求,然后由容器调用 start() 。实际上,在这种方法中,您根本不会有 servlet。在请求范围内拥有单个 Router Controller 可能是有意义的,它将把特定的 url 处理委托(delegate)给其他容器组件。
2) 如您所说,ScopedContainers 隐藏外部代码的容器,因此您必须编写自己的 PicoServletContainerListener(只需获取现有源代码并使作用域容器可用于您的代码),在此方法中您可以编写通常的 servlet 并委托(delegate)给微型组件
关于tomcat - 将 picocontainer 与 tomcat servlet 一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25644375/