java使用Spring IoC和web中定义的servlet。xml
这可能是一个相对直截了当的问题,我只是没有正确地搜索,但我正在尝试使用Spring IoC容器来配置我的servlet。我有一些额外的处理程序(它们是私有数据成员),因此我希望在运行时进行配置。有可能做到这一点吗
现在我有我的网络。xml正确加载servlet,然而,问题是我不确定如何将这些实例连接到Spring IoC容器,或者,将IoC容器生成的实例连接到servlet容器
在我的网上。xml文件,我正在设置ContextLoaderListener
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
以及为bean上下文配置正确的位置
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>
/WEB-INF/beans.xml
</param-value>
</context-param>
我还知道beans.xml
文件正在被解析,因为当我输入错误的内容时,出现了几个异常
想法?有更好的方法吗
# 1 楼答案
我想大多数想做你想做的事情的人都只是使用Spring MVC框架。在这种情况下,是一个Spring类,您只需实现“控制器”(而不是实际的servlet)
也就是说,完全有可能做到你想要的。查看FrameworkServlet(您可以扩展它)或DelegatingFilterPorxy(您可以使用这个类作为示例编写一个“DelegatingSevletProxy”)
# 2 楼答案
您应该将您的逻辑移出servlet,这样它们就只是一个薄包装器,可以获取对Spring应用程序上下文的引用,从上下文中实例化bean,向其传递HTTP请求、会话,以及任何其他需要的内容,并告诉bean做这项工作
认为不能在servlet容器之外实例化servlet,因此不能进行单元测试。IoC容器无法实例化它。它不会从国际奥委会或国际直接投资中受益
如果可以,使用Spring MVC;您可能希望将servlet中的逻辑转移到控制器类中
否则,看看org。springframework。网状物上下文ContextLoaderListener;从那里你可以看到Spring是如何自我引导的