Java 为什么不建议单例使用SpringServiceLocatoryFactoryBean?

Java 为什么不建议单例使用SpringServiceLocatoryFactoryBean?,java,spring,spring-boot,Java,Spring,Spring Boot,我正在Spring中使用ServiceLocatoryFactoryBean实现服务定位器模式,如下所述: 我有多个解析器实现,希望在运行时选择正确的解析器实现来处理请求。每个解析器实现parse(String)方法 @Autowired 私人ParserFactory ParserFactory; @后期映射(“/parse/{format}”) 公共字符串分析(@PathVariable字符串格式,@RequestBody字符串内容){ 返回parserFactory.getParser(格

我正在Spring中使用ServiceLocatoryFactoryBean实现服务定位器模式,如下所述:

我有多个解析器实现,希望在运行时选择正确的解析器实现来处理请求。每个解析器实现
parse(String)
方法

@Autowired
私人ParserFactory ParserFactory;
@后期映射(“/parse/{format}”)
公共字符串分析(@PathVariable字符串格式,@RequestBody字符串内容){
返回parserFactory.getParser(格式).parse(内容);
}
(请注意,这是一个非常简单的示例。省略了安全性、服务、错误处理等)

这是可行的,但文件上说:

这样的服务定位器允许调用代码与服务分离 BeanFactoryAPI,通过使用适当的自定义定位器接口。 它们通常用于原型bean,即用于工厂 应该为每个调用返回一个新实例的方法。这个 客户端通过setter或setter接收对服务定位器的引用 构造函数注入,以便能够调用定位器的工厂 方法按需对于单例bean,最好是直接注入目标bean的setter或构造函数。

粗体部分与我的用例有什么关系?我的服务都是单例的,setter或构造注入不是一个选项,因为在请求进入控制器之前,我不知道请求的解析器类型

    @Bean("parserFactory")
    public FactoryBean serviceLocatorFactoryBean() {
        ServiceLocatorFactoryBean factoryBean = new ServiceLocatorFactoryBean();
        factoryBean.setServiceLocatorInterface(ParserFactory.class);
        return factoryBean;
    }