0

可以在使用 ibatis 初始化 ActionServlet [init() 方法] 期间调用存储过程吗?

4

1 回答 1

0

是的,假设 ibatis 在ActionServlet.init执行之前已初始化,如果您在 ServletContextListener 中对其进行初始化,将会是这样。

但是,我会考虑您是否应该在ActionServlet.init. 我会在 ServletContextListener 的contextInitialized方法的实现中这样做。

Craig McClanahan 在 2002 年发表的一篇文章解释了为什么这是更好的做法:

“这样做的原因是 servlet 规范不保证servlet 将被加载一次,然后在应用程序的整个生命周期中都留在内存中,尽管原则上大多数容器都会为大量请求的 servlet 这样做。例如,它完全是容器丢弃 Struts 控制器 servlet,然后在 web 应用程序的生命周期内再次重新初始化它,多次重新初始化它是合法的。

ServletContextListener 的好处是,您可以保证 contextInitialized() 和 contextDestroyed() 仅在您需要它们时(webapp 启动和 webapp 关闭)被调用,无论中间的 servlet 和 JSP 页面发生什么情况。但这仅适用于添加了此 API 的 2.3 或更高版本的系统。”

于 2012-10-07T18:35:24.553 回答