当我在寻找在Servlet之间共享资源(例如DataSource)的方法时,大多数时候都会提出使用ServletContextListener。这是共享资源的标准方式吗?还是有其他选择吗?
答案 0 :(得分:3)
这取决于您的要求。但是,您可以创建一个存储库,例如单个对象来保留您的资源,在整个JVM中,该对象只存在一个实例。此外,由于并发问题,使用servletcontext来获取资源实例(例如数据源)并不是一个好习惯。对于数据资源,我将使用JNDI资源,并让容器(tomcat或应用程序服务器)管理这些资源,就像任何其他服务对象(例如DAO)一样。 Spring通过应用程序上下文解决了这些问题,其中所有服务bean都存在。您需要在此上下文中将服务对象定义为bean,并且这些可以在控制器,拦截器等中注入(请参阅依赖注入 - CDI),其中需要使用不同的策略。