Spring:Setter中的Set方法首先会被Spring调用吗?

时间:2012-06-12 15:44:54

标签: spring

我对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?

1 个答案:

答案 0 :(得分:0)

是的,这是Spring给你的基本契约:在它返回任何bean之前,你可以保证根据你的配置初始化这个bean。换句话说,在完全初始化该bean之前,您将永远无法调用任何bean的任何业务方法(setter注入,字段注入,构造后回调)。