と という 2 つのサービス Bean がPowerUserManagerありSimpleUserManagerます。両方の@Serviceアノテーション付きクラスには、コードの約 20% が共通しています。
2 つのクラス間の冗長性を減らすために、共通の抽象クラス ( ) を持つ継承ツリーを作成しました。BaseUserManager
BaseUserManager
|
---------------
| |
PowerUserManager SimpleUserManager
次に、私@Controllerまたは任意のクライアントクラスで、注釈を使用して両方を@Autowired注入し、扱っているユーザーのインスタンスに応じてそれらのいずれかを使用します。PowerUserManagerSimpleUserManager
特にサービス層でコードを因数分解するために継承を使用するのは苦手です。Spring フェローの皆さん、これを行うためのより良い方法を見つけましたか?