我正在使用Oauth2为我的Web应用程序创建第三方登录系统,并且必须支持各种第三方Oauth2.0服务提供商,如
我已经为这些代码工作了。每个服务提供商都有一组需要在开始Oauth进程之前创建的配置。我正在考虑使用Spring的ServiceLocatorFactoryBean
并为每个Oauth提供者创建一些服务并根据用户选择的内容可以获取该特定服务。
我的方法是否足够好,还是像过度使用/过度复杂的
修改
根据一个答案,我们可以创建一个具有单例范围的bean并向其注入所需服务的Map,以便我们可以根据用户选择的内容从Map获取服务,虽然方法很好但不会强制我们在内存中加载每个服务,无论我们是否使用它们,它们都将保留在内存中
答案 0 :(得分:3)
使用ServiceLocatorFactoryBean是一种方法,并解决了基于String键查找获取bean(实现接口)的问题。
javadoc表示该类主要用于注入原型范围的bean,但也适用于其他范围,尽管它们没有建议它。
javadoc给出的指示不是创建ServiceLocatorFactoryBean的用例,另一个给出相同工作的解决方案就是创建一个单例bean OAuthServiceProvider,它根据一个字符串返回正确的服务,只使用一些if / elses或map。
从长远来看,它会更具可读性,与此相比,使用ServiceLocatorFactoryBean似乎不会给我们带来太大的影响。