0

我有一个具有如下方法的 DAO:

class AbcService 
{
  private AbcDAO isntance;
  public void getStuff()
  {
    instance.getQueryResult();
  }
}

现在,如果从任何地方调用此方法,它将给出 NullPointerException,其中实例调用查询方法。这段代码仍然在项目中使用了很长时间,在称它不正确之前我会三思而后行。是否有某种方式可以访问此代码。这是标准做法吗?

4

3 回答 3

1

如果你有一个 setter isntance,你只需要在调用之前调用它getStuff。这是标准的(尽管有些人会说所有需要的字段都应该在构造函数中设置。

于 2013-04-09T07:06:45.540 回答
1

如果您使用的是 springbean 并且它比您的问题更广泛,则此答案仅适用。但我想这对您有用

是的,当您将其用作弹簧豆时,这通常是使用的做法。所以,在调用这个方法之前,需要确定这个springbean已经实例化了。基本上,这是通过从 ApplicationContext 获取 spring bean 或调用者类本身从其父 bean 接收此 bean 的实例来完成的......

一般的做法是通过在 web.xml 中定义 contextloaderlistener 来加载应用上下文。有关如何执行此操作的更多信息,请参阅http://static.springsource.org/spring/docs/3.1.x/javadoc-api/org/springframework/web/context/ContextLoaderListener.html

于 2013-04-09T07:17:17.793 回答
1

我认为该对象instance是通过Spring Dependency Injection注入的。请在您的项目中搜索任何“.xml”文件,该文件的 bean 定义中提到了 AbcService 的完全限定类名。AbcService

于 2013-04-09T07:19:41.473 回答