java ServletContext或Properties类
我正在开发一个Servlet,它有不同的操作,这些操作依赖于不同的参数,比如默认值。但是,我希望能够在运行时通过jsp或命令行界面更改这些值。此外,有许多不同的类(主要是用于每个操作的命令)需要能够访问这些参数。我是否应该将这些值存储在一个bean MyProperties类中,该类包装java的Properties类以从文件中加载值,然后对其进行更改?或者我应该将它们加载到servlet的应用程序上下文中并从那里获取/设置它们
你可以在下面搜索框中键入要查询的问题!
我正在开发一个Servlet,它有不同的操作,这些操作依赖于不同的参数,比如默认值。但是,我希望能够在运行时通过jsp或命令行界面更改这些值。此外,有许多不同的类(主要是用于每个操作的命令)需要能够访问这些参数。我是否应该将这些值存储在一个bean MyProperties类中,该类包装java的Properties类以从文件中加载值,然后对其进行更改?或者我应该将它们加载到servlet的应用程序上下文中并从那里获取/设置它们
# 1 楼答案
两者都做。一旦应用程序在
ServletContextListener#contextInitialized()
中启动,就创建MyProperties
类并将其放入servlet上下文中。然后,您可以以通常的方式从每个servlet和JSP中的servlet上下文中获取存储的实例,并相应地通过MyProperties
类检索/操作属性这样一来,servlet上下文中只有一个属性,而不是每个属性的无数属性。通过这种方式,您也不需要在
MyProperties
中处理静态和单例,因为这将是不可抽象或不可测试的# 2 楼答案
将这些配置属性存储在数据库中。总是去数据库获取最新的配置。如果性能是个问题,那么我建议将它们缓存在DB端以保持简单
如果您需要终极性能,那么我建议您在应用程序启动时加载它们(可能是Servlet.init()或ServletContextListener)。但这需要更多的代码来确保数据库和缓存的更新保持同步
# 3 楼答案
可以将这些默认的
values of properties
保留为public class
的public static
字段,比如属性类。您可以在应用程序的不同部分之间共享它们,因为您可以轻松地获取和设置它们