0

この時期、私はSpringFrameworkを勉強しています。

今、私は春のBeanのライフサイクルについて、特にBeanの初期化と破壊について研究しています。このチュートリアルを読んでいます。

http://www.tutorialspoint.com/spring/spring_bean_life_cycle.htm

私は前の記事で提案された例を実装しましたが、この議論には疑問があります。

この例では、 HelloWorld.javaMainApp.javaの2つのクラスしかありません。

HelloWorld.javaクラスには、Beanの初期化のための2つのメソッドがあります。init ()(Beanの作成後にフレームワークによって呼び出されます)とBeanのクリーンアップのために:* destroy()(Beanの破棄前にフレームワークによって呼び出されます)アプリケーションの最後に)

わかりました。これは明らかです。これらの2つのメソッドは、Beanライフサイクルの2つの特定の瞬間にフレームワークによって自動的に呼び出されます。これは、 init- method属性とdestroy-method属性によってアプリケーションコンテキストxmlファイル内でこのBeanを削除したためです。

<bean id="helloWorld" 
    class="org.andrea.myexample.myInitDestroyExample.HelloWorld"
    init-method="init" destroy-method="destroy">
    <property name="message" value="Hello World!"/>
</bean>

これは私には明らかです。

私が理解するのにいくつかの問題があるのは、前の記事の冒頭に関連しています。実際、初期化メソッドを使用するには、BeanがInitializingBeanインターフェイスとそのメソッドのコードを実装する必要があることを示しています。afterPropertiesSet ()

そして、Beanのクリーンアップを実行するために(これが削除される前に)、私のBeanはDisposableBeanインターフェースとそのメソッドのコードを実装する必要があります:destroy()

わかりました...だから...なぜ私のBeanはこれらのインターフェースを実装する必要があることを最初に示し、次にこの例では、このことを行わず、XML構成でinitとdestroyメソッドの存在を宣言するだけですインターフェイスを実装していないクラス内に実装しますか?

Tnx

4

3 に答える 3

5

In the case of XML-based configuration metadata, you can use the init-method attribute to specify the name of the method that has a void no-argument signature

XML定義は、そのようなインターフェースを実装するための代替手段です。

于 2013-01-25T11:33:11.363 に答える
3

SpringのBeanの初期化/破棄を行うにはいくつかの方法があります

1)default-init-method / default-destroy-method beans(root element xml config)を定義すると、Springはインスタンス化する任意のBeanでこれらのメソッドを検索します

2)Beanの個別のinit-method/destroy-methodを定義できます

3)InitializingBean / DisposableBeanインターフェースを実装でき、init-method /destroy-methodがxmlconfigで定義されていない場合でも、Springはそれらを呼び出します。

4)@PostConstruct / @PreDestroyアノテーションを使用してBeanのメソッドにアノテーションを付け、xmlconfigでオンに切り替えることができ<context:annotation-config />ます

于 2013-01-25T11:53:00.070 に答える
-2

今日の世代は素早い行動で構成されていますが、夢を実現するのを妨げる強い考え方を持っていない人の多くは

于 2013-01-26T13:59:16.853 に答える