2017-09-09 3 views
-1

Beanのライフサイクルとは何ですか?なぜInversion of controlはdestroy()メソッドを自動的に呼び出さないのですか、なぜ明示的に呼び出すのでしょうか?春の豆のライフサイクル管理でファイナライズ方法?

+1

[豆のライフサイクルとは何ですか?](https://stackoverflow.com/questions/13988720/what-is-the-lifecycle-of-spring-bean) –

+0

@MohitTyagiはおそらくファイナライズではありませんdupターゲットには言及されていません。 –

+0

@suryaなぜファイナライズを制御する必要がありますか? Javaでは、 'finalize()'が呼び出され、それに依存するコードが不思議な方法で失敗することは決してありません。それをしないでください。代わりに、Springドキュメントの[Destruction Callbacks](https://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-lifecycle-disposablebean)をお読みください –

答えて

1

finalize()のメソッドは、Spring Beanのライフサイクルとは関係ありません。
このメソッドは、オブジェクトがゴミ収集の後にしばらく呼ばれます。
このメソッドがいつ正確に呼び出されるかを予測することは難しいため、オーバーライドすることは悪い習慣とみなされます。
いずれにせよ、決してそれを直接呼び出すべきではありません。

Spring Beanのライフサイクルは、here - 「Destruction callbacks」を検索しています。
通常、Beanのメソッドに@PreDestroy注釈を付けると、Springコンテナが破棄されたときにこのメソッドが呼び出されます。