为什么JavaEE中的Servlet类在初始化的时候,使用init()方法来获取参数,在类中定义字段不是更方便吗?

使用init()方法,还需要读取xml,这不是更消耗性能的设计吗?如果直接设计成字段,岂不是既方便又省性能。

阅读 1.8k
1 个回答

如果用getInitParameter()的话,确实是读取WEB-INF/web.xml的参数(Servlet 3.0以后,也可以读取@WebServlet@WebFilter注解里的参数)。
我觉得,比起读取类中的成员,读web.xml唯一的好处是:

类修改了还需要编译和部署,但web.xml修改后自动触发ServletContext重启,不需要编译,会很方便。

另外,项目复杂的话,初始化参数(如数据库连接串、依赖的外部API地址、第三方接口帐号等)的来源会是多样的,比如:

  • Spring等框架规定的容器
  • 服务器上其他位置的配置文件
  • 数据库或其他存储
  • 配置中心

总之,与环境相关的配置,无论写在代码里还是写在web.xml里,似乎都不是很好的选择。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题