2012-04-12 7 views
3

アプリケーションコンテキストウェアがどのように機能するのかを知る必要があります。私はいくつかのインポートリソース(別のapplicationContext)を持っているapplicationContext.xmlを持っています。 JavaクラスのapplicationContext.xmlを使用してSpring Beanを使用する必要があります。ApplicationContextaware works

私はJavaクラスの中で春の豆を取得するために使用されるapplicationcontextawareクラスを知りました.Applicationawareはsetメソッドとgetapplicationcontext()メソッドを持っています。 getapplicationcontext()はstaticとして定義されています。

applicationcontextwareはapplicationContext.xmlをどのようにロードしますか? applicationcontextawareがロードするようにapplicationContext.xmlの場所を指定する必要があるかどうか私はどのように私のJavaクラスでそれを使用することができますか?

+0

などContextLoaderListener@Configurationクラスを使用して - 春を開始する方法のトンがあること

ctx.getBean("someName") 

注:今、あなたは単に名前や種類ずつ豆を取り出すことができます。私はapplicationContext.xmlでそれをとして定義しました。 Jessie

+0

私は個人的にstrutsで構築されたハイブリッドエンタープライズアプリケーションでこれを使用しました。しかし最近、春の豆と文脈を紹介し始めました。ここでは、web.xmlを使用してアプリケーションコンテキストをロードするのではなく、ApplicationContextAwareを使用します。 – user2815984

答えて

15

あなたはいくつか混乱しています。まず第一に私たちはApplicationContextAwareクラスについて話していますか?あなたはめったに直接ApplicationContextにアクセスする必要がありませんしかし

public class MyFancyBean implements ApplicationContextAware { 

    private ApplicationContext applicationContext; 

    void setApplicationContext(ApplicationContext applicationContext) { 
    this.applicationContext = applicationContext; 
    } 

    public void businessMethod() { 
    //use applicationContext somehow 
    } 

} 

:あなたは通常、このように実装する

setApplicationContext(ApplicationContext applicationContext) 

:それは、唯一の方法があります。通常は一度起動し、自動的にBeanに自動的に移入させます。

JavaクラスでapplicationContext.xmlを使用する必要があります。ここで

あなたが行く:あなたはすでにapplicationContext.xmlに含まれるファイルを言及する必要はありません

ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml"); 

注意を。私はApplicationContextの意識実装ApplicationContextProviderを作成している

+0

このApplicationContext ctx = new ClassPathXmlApplicationContext( "applicationContext.xml")のようにapplicationcontextをロードすると疑いがあります。 applicationcontextawareの目的を揺るがしますか? – Jessie

+0

@ramya:まあ、教えてください:-)。私が言ったように、これはまれに必要なことではありません。ほとんどの場合、あなたのBeanにはこのようなSpring依存性がありません。 –

+2

アプリケーション・サーバー・インスタンス内からSpringを実行している場合など、Springがアプリケーション全体を直接制御していない場合でも、2つのインスタンスを結びつけたい場合などがあります。 ApplicationContextAwareのjavadocからは、さまざまな方法が挙げられますが、XML/Annotationsの設定を絶対に使用できない限り、コンテキストから直接取得する必要はありません。 –