BeanNameAutoProxyCreatorとシングルトン

今までspringを使ったことが無かったのでいろいろいじってみる。
BeanNameAutoProxyCreatorというクラスでログ出力やらパフォーマンス測定やらトランザクション管理やらAOP的なことができるので便利なのだが、springの中身を知りたくてステップ実行していてふと疑問に思った。


beanのコンストラクタが2回呼ばれている。


springが管理するインスタンスはシングルトンが基本なはず。
ところがBeanNameAutoProxyCreatorを使用すると基になるbeanとは別にinterceptorを仕込むためのクラスとインスタンスが動的に作られ、基になるbeanはそのインスタンスのフィールドとして存在しているらしい。
BeanNameAutoProxyCreatorが作るクラスは基のbeanのクラスを継承しているので、beanのコンストラクタがそこでも呼ばれている。
処理の内容にもよるが(springを使ってるから)シングルトン=コンストラクタが1回しか呼ばれないという思い込みは危険かもしれない・・・