使用Spring的ServiceLocatorFactoryBean

时间:2014-01-04 16:32:59

标签: spring spring-mvc

我正在使用Oauth2为我的Web应用程序创建第三方登录系统,并且必须支持各种第三方Oauth2.0服务提供商,如

  1. 的Gmail
  2. MSN
  3. 雅虎
  4. 微博
  5. 我已经为这些代码工作了。每个服务提供商都有一组需要在开始Oauth进程之前创建的配置。我正在考虑使用Spring的ServiceLocatorFactoryBean并为每个Oauth提供者创建一些服务并根据用户选择的内容可以获取该特定服务。

    我的方法是否足够好,还是像过度使用/过度复杂的

    修改

    根据一个答案,我们可以创建一个具有单例范围的bean并向其注入所需服务的Map,以便我们可以根据用户选择的内容从Map获取服务,虽然方法很好但不会强制我们在内存中加载每个服务,无论我们是否使用它们,它们都将保留在内存中

1 个答案:

答案 0 :(得分:3)

使用ServiceLocatorFactoryBean是一种方法,并解决了基于String键查找获取bean(实现接口)的问题。

javadoc表示该类主要用于注入原型范围的bean,但也适用于其他范围,尽管它们没有建议它。

javadoc给出的指示不是创建ServiceLocatorFactoryBean的用例,另一个给出相同工作的解决方案就是创建一个单例bean OAuthServiceProvider,它根据一个字符串返回正确的服务,只使用一些if / elses或map。

从长远来看,它会更具可读性,与此相比,使用ServiceLocatorFactoryBean似乎不会给我们带来太大的影响。