为什么Spring的FactoryBean getObject返回null?

恶魔

我想ConversionService用custom 创建一个Spring Converter,但是返回值ConversionServiceFactoryBean#getObjectnull参见示例:

@Bean
@Autowired
public ConversionService conversionService(Set<Converter<?, ?>> converters) {
    final ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
    factory.setConverters(converters);
    return checkNotNull(
            factory.getObject(),
            "conversionService must not be null.");
}

checkNotNull抛出一个NullPointerExceptionconverters按预期的方式注入。为什么工厂退货null我该如何解决?

恶魔

感谢Sotirios Delimanolis评论得出了以下解决方案:

@Bean
public ConversionServiceFactoryBean conversionService(Set<Converter<?, ?>> converters) {
    final ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
    factory.setConverters(converters);
    return factory;
}

这实际上是以下配置的简写:

@Bean
public ConversionService conversionService(Set<Converter<?, ?>> converters) {
    final ConversionServiceFactoryBean factory = new ConversionServiceFactoryBean();
    factory.setConverters(converters);
    factory.afterPropertiesSet(); // necessary
    return factory.getObject();
}

工厂一直处于未完成状态,直到调用afterPropertiesSet解释)。但是,如果ConversionServiceFactoryBean返回本身而不是,则无需调用它ConversionService由于该工厂是一个InitializingBeanFactoryBeanSpring将调用afterPropertiesSetgetObject内部,如果需要ConversionService实例。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章