【问题标题】:how to implement Factory Pattern with Spring 3.0 Services如何使用 Spring 3.0 服务实现工厂模式
【发布时间】:2012-09-09 09:58:12
【问题描述】:

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

我对此接口有两种不同的实现。

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

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

据我了解,我们可以在 java 中使用工厂模式来实现这一点,并实现同样的效果。

我们如何在 SPRing 中实现这一点???

【问题讨论】:

标签: spring design-patterns factory


【解决方案1】:

除了上面建议的相关主题,还有一个很好的thread on 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; 
    

【讨论】:

  • 发生链接失效。请在此处总结或引用关键部分。仅链接的答案可能会被删除,恕不另行通知。谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-02-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 2019-12-26
相关资源
最近更新 更多