2011-03-24 7 views
0

と仮定私はは、私は別の場所でのSpring Beanを使用することはできますか一箇所に

@Resource(name="registrationService") 
private RegistrationService registrationService; 

これは正常に動作しているコントローラでこれを持っていると私は、サービスクラスのメソッドを使用することができます。

私は別のJavaクラスがあり、私はregistrationServiceクラスでメソッドを使いたいとします。そう

別の名前で私はそこに同じこと

@Resource(name="registrationService") 
private RegistrationService registrationService; 

やアクセス方法を使用するか、私は春に異なるBeanを宣言することができ、私なら、これは今

public String test(){ return "testing"; } 

サービスクラス内の関数でありますコントローラーでこれを呼び出すと、正常に動作します。

しかし、ユーザーを取得するためにUserDAOという別のクラスがあります。 私はこの

プライベートリストinternalDatabaseようにした場合は(){

 List<Registration> users = new ArrayList<Registration>(); 
     Registration user = null; 

      logger.debug("Before"); 
    logger.debug(registrationService.test()); 
    logger.debug("After"); 

      users.add(user); 
     return users; 
    } 

logger.debug(registrationService.test()); 

後は実行されません。もし私がその行を削除すると、すべてが機能します。私は問題が何であるか分かりません

答えて

1

はい、Springを使用して同じBeanを2つの異なるクラスに注入できます。

+0

私はサービスクラスで単純な機能を持っていますが、これは1つのコントローラでは正しく動作していますが、他のクラスでは正しく動作していません。私は質問 –

0

私の最高の推測では、NullPointerExceptionが

以降の行が実行されなかった理由です
logger.debug(registrationService.test()); 

に発生しています。 registrationService、私は正しく容器に注入されていないと思う。サービスクラスがapplicationContext.xmlで正しく定義されているか、パッケージがコンポーネントスキャンに含まれていることを確認してください。

また、UserDAOはSpringによって管理されているか、そうでない場合はSpring管理サービスクラスにアクセスする方法があることを確認してください。

+0

に入れますが、そのクラスはコントローラクラスで正常に動作しています –

+0

私は私の答えを編集しました。第2段落を参照のこと。 – gouki

+0

コントローラクラスはSpringによって管理されているので、サービスクラスを注入することができました。おそらくあなたのDAOはそうではありませんでした。 – gouki

関連する問題