【问题标题】:What will always call earlier: servletContextListener method or constructor?什么总是会更早调用:servletContextListener 方法或构造函数?
【发布时间】:2014-04-29 10:48:39
【问题描述】:

代码如下:

@WebService(...)
public class service implements someInterface, ServletContextListener
{
    public service()
    {
        // action1
    }

    public void contextInitialized(...)
    {
        // action2
    }
} 

问:什么动作永远是第一个?

【问题讨论】:

  • System.out.println("<method name here> was called!"); 有什么理由你不知道吗?
  • 请遵循 CamelCasingConventions 的类和方法名称。否则只会增加混乱。
  • 我询问了 ServletContextListener 方法的工作原理。 System.out... 只会给我私人结果。
  • @slider 您所说的没有意义,因为ServletContextListener 仅描述了您签约提供的方法;您可以完全控制在所有方法中使用该输出(或任何其他适合您环境的输出)。
  • -1。正如 mah 指出的那样,基本调试可以解决这个问题

标签: java jax-ws servletcontextlistener


【解决方案1】:

方法contextInitialized是属于a specific instance of a class的方法。为了获得这样的实例,必须首先调用类servicea constructor。因此,将首先调用构造函数。在 Java 中,其他任何事情在技术上都是不可能的。

补充一点:用大写首字母拼写类是 Java 惯例。您应该遵守此约定以使您的代码更具可读性。

【讨论】:

  • 感谢您的回复。我以为它可以有一些具体的。
  • 假设,有可能创建一个类的实例而不调用任何构造函数。然而,这是一个 JVM hack,它只能在内部使用,例如提供反序列化。通常,您永远不会遇到这样的对象构造。在调用其生命周期方法之前,为框架提供默认构造函数以创建实例,这在另一方面很常见。
  • 感谢您的建议!
猜你喜欢
  • 2016-04-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多