从Service调用DAO方法的问题

时间:2013-04-09 07:04:43

标签: java java-ee model-view-controller dao

我有一个DAO,其方法如下:

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

现在,如果从任何地方调用此方法,它将提供NullPointerException,其中实例调用查询方法。     这个代码在很长一段时间内仍然在项目中使用,在调用它之前我会三思而后行。是否有一些方法可以访问此代码。这是标准做法吗?

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分: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

答案 2 :(得分:1)

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