Servlets - 是否使用构造函数?

时间:2012-07-22 15:32:07

标签: servlets coding-style java-ee-6 glassfish-3 servlet-3.0

servlet中的构造函数被认为是一种好/坏的做法?它与init()方法相比如何?使用servlet-3和vanilla javaEE(由javax.inject包提供的CDI)

2 个答案:

答案 0 :(得分:4)

在servlet中使用构造函数没有任何问题。切换到init()的原因是您需要获取ServletConfigServletContext等。这些对象可能尚未在构造函数中可用。

另外假设某些容器可能会使用动态子类或代理等servlet来做一些奇特的事情。最后,构造函数中的副作用往往会使测试更加困难。

为了避免意外行为并确保您的servlet 100%可移植,只需坚持使用init()。此外,如果您同时使用destroy(),那么实施init()会使您的代码更“对称”。

另见

答案 1 :(得分:0)

是的,我们可以在servlet中使用构造函数,但不需要bcoz -

servlet由Web容器初始化。与其他java类不同,servlet未初始化。构造函数用于初始化显式创建的对象,而servlet使用不同的方法'init()'进行初始化。

Servlet只是一个接口(javax.servlet.Servlet),java中的接口没有任何构造函数,并且在servlet接口中声明了实现类的构造,它没有任何意义。 Container只会使用init()方法初始化servlet。