我有这样的XML:
<bean id="conversionService" class="org.springframework.context.support.ConversionServiceFactoryBean"> <property name="converters"> <list> <bean class="converters.AddressToStringConverter" /> <bean class="converters.StringToAddressConverter" /> </list> </property> </bean>
它可以毫无问题地配置转换器。
但是,此代码无法做到相同:
@Configuration public class ConversionConfiguration { @Bean public ConversionService getConversionService() { ConversionServiceFactoryBean bean = new ConversionServiceFactoryBean(); bean.setConverters(getConverters()); bean.afterPropertiesSet(); ConversionService object = bean.getObject(); return object; } private Set<Converter> getConverters() { Set<Converter> converters = new HashSet<Converter>(); converters.add(new AddressToStringConverter()); converters.add(new StringToAddressConverter()); return converters; } }
这部分配置按上下文进行扫描-我通过调试器对其进行了检查。问题可能出在哪里?
从我的角度来看,您的问题就是Bean名字。一旦您没有明确设置@Bean(name="conversionService")名称,将使用的名称是getConversionService。
Bean
@Bean(name="conversionService")
getConversionService
从文档:
该bean的名称,或者如果是复数,则为该bean的别名。如果未指定,则Bean的名称为带注释的方法的名称。如果指定,方法名称将被忽略。