为什么Spring的FactoryBean getObject返回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实例。

解决方法

我想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抛出一个NullPointerException。在converters按预期的方式注入。为什么工厂退货null?我该如何解决?

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...