0

在我的项目中,我有一个用 org.springframework.stereotype.Service 标签注释的界面。

对于这个接口,我有两种不同的实现。

在我的管理 bean 中,我正在注入接口服务类并使用它的方法。

现在我的要求是,在运行时我必须选择特定的实现(比如说基于登录用户组),以便可以调用相应的逻辑。

根据我的理解,我们可以在 java 中使用工厂模式来实现这一点并实现相同的目标。

我们如何在 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. @Primary 与您的实现类中的@Component、@Service 或@Repository 注释一起,在这种情况下,默认情况下会注入此实现。

  3. 如果您使用@Autowired 标记某个接口类型的列表,则该接口的所有可用实现都将被注入。

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