我想ConversionService
用custom 创建一个Spring Converter
,但是返回值ConversionServiceFactoryBean#getObject
是null
。参见示例:
@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
?我该如何解决?
感谢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
。由于该工厂是一个InitializingBean
和FactoryBean
Spring将调用afterPropertiesSet
和getObject
内部,如果需要ConversionService实例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句