2

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

4

2 回答 2

4

在 servlet 中使用构造函数并没有错。切换到的原因init()是当您需要获取ServletConfig,ServletContext等时。这些对象在构造函数中可能(还)不可用。

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

为了避免意外行为并确保您的 servlet 是 100% 可移植的,只需坚持使用init(). 此外,如果您也使用destroy(),实现init()将使您的代码更加“对称”。

也可以看看

于 2012-07-22T15:39:50.173 回答
0

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

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

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

于 2012-11-20T11:36:07.707 回答