置換原則

さて、いつものしんさんの出張所らしいネタがおわったところで、NetBeansネタでも。

メーリングリストS2JDBCが標準APIを本来と違う使い方しているためにNetBeansから文句を言われるという投稿があった。

やっぱり使い方が決まっている標準APIはリスコフの置換原則じゃないけど、同様の使い方が出来る場合以外でつかっちゃうと問題が発生するのだなと。せめてパッケージ名が変わっていたら問題なかったのに。

同様にSpring Frameworkも@ResourceをBeanの注入用に使えるようになっていて、これもアプリケーションサーバーで問題を起こしている。@Resourceとか@EJBとか@PersistenceContextとか注入を示すアノテーション等がついた場合サーバーはそれらが存在するか間違ってないかデプロイ時にすべてチェックをしにいくのだ。

一応設定を変えると本来の動きになるのだが、標準APIの@ResourceはJNDIルックアップ専用とかかれているのだからその動きに従うべきかと。だからSpringでは@ResourceはJNDIルックアップのモードにして、@Autowired+@Qualifierのほうを使うべき。