我对Spring有疑问,请原谅我的问题是否愚蠢。 请参阅此代码
public class HomePageController extends AbstractController {
private GeekNewsService service;
protected ModelAndView handleRequestInternal(HttpServletRequest req, HttpServletResponse res) throws Exception {
List<NewsArticle> articles = service.getArticleOverviews();
return new ModelAndView( "home", "articles", articles );
}
public void setGeekNewsService( GeekNewsService service ) {
this.service = service;
}
}
这里我的问题是,在handleRequestInternal方法中,为什么在这行service.getArticleOverviews()没有任何NullPointerException? (因为实际的对象创建将在setMethod的SetterInjection的帮助下发生)??
Spring中是否有任何规则,当一个类被调用时,必须首先调用setXXX Methods?
答案 0 :(得分:0)
是的,这是Spring给你的基本契约:在它返回任何bean之前,你可以保证根据你的配置初始化这个bean。换句话说,在完全初始化该bean之前,您将永远无法调用任何bean的任何业务方法(setter注入,字段注入,构造后回调)。