2011-11-08 36 views
1

我工作的医院应用程序,我需要表现出血型在每秒页下拉,并正从他们的值到数据库表 因为血型不频繁变化的实体,所以我们计划创建一个带有键值对的地图,并在整个应用程序中提供该地图,以便多次创建相同的地图创建全球可用的地图

我的问题是什么可以成为实现这一目标的最佳方式。一些快速选项来到我的头脑是

  1. 在应用程序启动时创建一个映射并将其放在应用程序上下文中
  2. 创建它读取的属性文件的实用程序类,并使用这些值填充地图或简单地创建地图exisitng血型。

但我不确定这些选项有多有效,因为网站在不久的将来必须处理大量的用户点击。

在此先感谢

回答

2

创建加载在系统启动时或负荷值,当类加载这些值的实用程序类。通过这种方式创建类会带来很多优势:

  • 您可以通过编写此类的测试用例来测试此类及其功能。 (检查是否正在加载等)
  • 这使得你更少依赖上下文以及上下文如何工作。如果您由于某种原因需要更改应用程序服务器,那么使您的应用程序更轻松。
  • 代码变得更可读的(BloodGroupUtils.getAll()相比Application.getContext().get("bloodGroups");或类似的东西。)

性能,这可能是一个快一点。不一定,但(我们需要检查其它几个系统使用/参数得出这个结论。)

+0

在应用程序上下文中的地图会以同样的方式静态类加载 - 那可测试性将不会受到影响。每个应用程序服务器都以相同的方式访问应用程序上下文;它是规范的一部分。 –

+0

我的意思是,测试班级将是微不足道的。测试静态类和方法是有问题的,不是吗? –

+0

测试静态类不是比其他任何事情都困难。 *使用静态类的测试代码更加困难,并且是我们使用DI/IoC的一个主要原因 - ''BloodGroupUtils.getAll()'只使用*不同*静态类。使用* map本身*的代码应该与*检索地图的机制分离。 –

1

从静态类或应用程序上下文检索值将具有基本相同的性能。静态类可能会微不足道,因为您不必从应用程序上下文中获取映射,但我无法想象它值得担心。

+0

::感谢输入它解决了我的目的! –

+0

@ user702325注意我和拉维之间的评论;它带来了一个很好的观点:保持*使用的代码*映射与*检索映射的机制解耦,无论是从静态类,从应用程序上下文还是从其他任何地方。 –

+0

:我AREADY读取和感谢提醒:) –