2012-04-12 15 views
2

私はSpring MVC 3.05を使用しています。Java EEとSpring MVC "ブートストラップ" /サーバ起動時のコード実行

ブートストラップクラスを作成する最も良い方法は何ですか? Grailsを考えよう。

<bean id="bootstrap" class="com.jobs.Bootstrap" /> 

<task:scheduler id="SpringScheduele" /> 
<task:scheduled-tasks scheduler="SpringScheduele"> 
<task:scheduled ref="bootstrap" method="onServerStart" fixed-delay="5000000000"/
</task:scheduled-tasks> 

私は、これはそれが発火ティルその時間を待って、その後、起動時に発火となります信じる:私は別の男が春の豆とscheduelerを宣言したが、私はまた、それは少し醜いだった覚えていると信じて、以前のプロジェクトで 再び。本当に理想的ではない。

public class Bootstrap { 

    public void onServerStart() { 
     System.out.println("....");   
    }  
} 

これを行うより良い方法はありますか?

答えて

2

あなたは豆ApplicationListenerを実装し、ContextRefreshedEventに耳を傾けを作成する必要があります:このような何か

@Component 
public class Bootstrap implements ApplicationListener<ContextRefreshedEvent> { 
    @Override 
    void onApplicationEvent(ContextRefreshedEvent event) 
     ... 
    }  
} 
+1

これは、すべてのBeanがブートストラップする前に作成され、初期化されていることを確認したい場合に使用します。 – sourcedelica

+0

ありがとうございます。私はすべてのEJBとDBのものがその時にロードされると思いますか? – momomo

+0

リフレッシュされたものではなく、ApplicationContextEventでなければなりませんか?私はちょうどそれが起動時に一度実行したい、私は他の人がコード変更でそれを実行し、次に公開すると推測しています。 – momomo

1

InitializingBeanを実装するクラスを作成することができます。

public class Bootstrap implements InitializingBean { 
    @Value("${my.prop.value}") 
    Integer somePropValue; 

    @Overrides 
    public void afterPropertiesSet() { 
     // runs after constructor & setter injection 
    } 
} 
+0

私はまったく同じことを例みました。しかし、方法は発火しないようです。私は何か別のことをする必要がありますか?豆を食べる?私はXML設定ファイルで注釈駆動型を持っています... – momomo

+1

コンポーネントスキャンがBeanをインスタンス化するように@Componentをクラスに追加します。 – Kevin

関連する問題