servlet中的参数化构造函数

Sil*_*ior 3 java servlets java-ee

我可以在servlet中声明参数化构造函数,它只是构造函数吗?

如果没有那么为什么?

eri*_*son 8

没有.

Servlet实例由容器通过反射创建,他们希望找到一个public,no-arg构造函数(默认构造函数).

要配置servlet,请使用web.xml文件中指定的servlet参数.这些传递给您的servlet init()方法.


虽然这将是可能的Servlet容器选择一个非默认的构造函数,并强制对字符串进行简单的类型和反思调用构造函数,这不是什么Servlet规范要求.

部分原因可能是历史性的; 在依赖注入系统使这种替代方案得到广泛实践之前,servlet首次被指定.但是,这样的构造函数相当有限; 传递可以从web.xml中指定的简单字符串创建的参数是切实可行的,但是更有用的对象 - DataSource例如 - 会很尴尬.

最好在servlet中包含最终成员变量.

JSR以前称为"WebBeans"(我认为是JSR 299),它将为Servlet中的依赖注入支持提供一些标准.这可能解决当前方法中的一些缺点.