0

私のプロジェクトには、org.springframework.stereotype.Service タグで注釈が付けられたインターフェースがあります。

このインターフェイスには 2 つの異なる実装があります。

管理 Bean では、インターフェイス Service クラスを注入し、そのメソッドを使用しています。

ここで私の要件は、実行時に特定の実装を選択する必要があることです (たとえば、ログイン ユーザー グループに基づいて)、それぞれのロジックを呼び出すことができます。

私の理解では、Java の Factory パターンを使用してこれを達成し、同じことを達成できます。

これを SPRIng でどのように実装できますか???

4

1 に答える 1

1

上記の関連トピックの提案に加えて、JavaRanch に良いスレッドがあります。

使用できます

  1. @Qualifier("myServiceImpl1") アノテーションと @Autowired。その場合、インターフェースのこの特定の実装が注入されます。@Component、@Service、または @Repository アノテーションでも同じ名前を使用する必要があります。

    @Service("myServiceImpl1") 
    public class MyServiceImpl1 implements MyService{}
    
    
    public class Consumer{
      @Autowired
      @Qualifier("myServiceImpl1") 
      public MyService myServiceImpl1;
    }
    
  2. 実装クラスで @Component、@Service、または @Repository アノテーションと一緒に @Primary を使用すると、この実装がデフォルトで注入されます。

  3. @Autowired でインターフェイス タイプのリストをマークすると、このインターフェイスの使用可能なすべての実装が注入されます。

    @Autowired 
    public List<MyService> allAvailableImplementations; 
    
于 2012-09-10T16:11:44.963 に答える