おそらく単純なアーキテクチャ/設計の質問:
私たちのJavaアプリケーションはサードパーティのコードに依存しています。ただし、このサードパーティのコードは、私が気に入らない小さなことを行います(timeZoneをGMTに設定します。アプリケーションのTimeZoneIDに基づいてタイムゾーンを別の方法で設定したいと思います)。私のオプションは何ですか?
1-アプリケーションのいたるところからサードパーティクラスへの呼び出し元が存在するため、サードパーティクラスを単純に拡張して、望ましくない動作をオーバーライドすることはできません(これは、最初にアプリケーションを継承した方法です)。
2-おそらく、あまりにも侵襲的な解決策は、サードパーティのコードに相当する独自のコードを記述し、代わりにそれに依存することです。しかし、それは多分多すぎて侵襲的すぎます。
3-私はSpringAOP(およびaspectJ)のものを少し見て、ロード時間の織り方をしました。私はあまり深く掘り下げませんでしたが、サードパーティのコードがjava.util.Timezone.setDefault(GMTTimeZone);を呼び出すので、私には思えました。(自分で作成/管理したクラスを呼び出すのとは対照的に)それは簡単にはできません。私はここで間違っている可能性があり、おそらくjava.util.Timezone.setDefault()を回避することができます。これが目的であるかどうかを教えてください。これはほとんど私の(唯一の)解決策です。
4-何かが足りないのですか、それともほとんどすべての利用可能なオプションですか?