0

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 Method 内で、この行 service.getArticleOverviews() に NullPointerException がなかったのはなぜですか?? (実際のオブジェクトの作成は setMethod の SetterInjection の助けを借りて行われるため)??

クラスが呼び出されたときにsetXXXメソッドを最初に呼び出す必要があるというSpringのルールはありますか??

4

1 に答える 1

0

はい、これは Spring が提供する基本的な契約です。Bean を返す前に、この Bean が構成に基づいて初期化されていることが保証されます。つまり、Bean の完全な初期化 (setter インジェクション、フィールド インジェクション、構築後のコールバック) の前に、その Bean のビジネス メソッドを呼び出すことはできません。

于 2012-06-12T15:48:11.030 に答える