我有一个具有如下方法的 DAO:
class AbcService
{
private AbcDAO isntance;
public void getStuff()
{
instance.getQueryResult();
}
}
现在,如果从任何地方调用此方法,它将给出 NullPointerException,其中实例调用查询方法。这段代码仍然在项目中使用了很长时间,在称它不正确之前我会三思而后行。是否有某种方式可以访问此代码。这是标准做法吗?
我有一个具有如下方法的 DAO:
class AbcService
{
private AbcDAO isntance;
public void getStuff()
{
instance.getQueryResult();
}
}
现在,如果从任何地方调用此方法,它将给出 NullPointerException,其中实例调用查询方法。这段代码仍然在项目中使用了很长时间,在称它不正确之前我会三思而后行。是否有某种方式可以访问此代码。这是标准做法吗?
如果你有一个 setter isntance
,你只需要在调用之前调用它getStuff
。这是标准的(尽管有些人会说所有需要的字段都应该在构造函数中设置。
如果您使用的是 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
我认为该对象instance
是通过Spring Dependency Injection注入的。请在您的项目中搜索任何“.xml”文件,该文件的 bean 定义中提到了 AbcService 的完全限定类名。AbcService