gpt4 book ai didi

java - 将bean注入(inject)到spring java配置类中

转载 作者:行者123 更新时间:2023-12-01 12:56:49 33 4
gpt4 key购买 nike

我有一个配置类,它使用 @Configuration 注释并扩展了 RepositoryRestMvcConfiguration。

作为扩展类的一部分,有一些可重写的方法允许配置 bean 配方。其中之一是配置 spring 组件可用的转换服务。

我想将一些bean注入(inject)到一个列表中,通过这个重写的方法迭代并添加为转换服务,我的配置java类定义如下:

@Configuration
@EnableJpaRepositories(basePackages = "com.example.model.repositories")
public class DataConfig extends RepositoryRestMvcConfiguration {

List<Converter<?,?>> converters;
//get
//set

@Override
protected void configureConversionService(ConfigurableConversionService conversionService){
for(Converter converter : converter){
conversionService.addConverter(converter);
}
}
}

以下定义了我希望注入(inject)到 app-context.xml 文件中的转换器

<beans>
<bean id="fooToBarConverter" class="com.example.model.converters.FooToBarConverter" />
<bean id="barToFooConverter" class="com.example.model.converters.BarToFooConverter" />

<util:list id="myConverters" value-type="org.springframework.core.convert.converter.Converter">
<ref bean="barToFooConverter"/>
<ref bean="fooToBarConverter" />
</util:list>
</beans>

是否有更好的方法通过 spring 配置提供这些转换器,或者我是否需要将它们显式列出为我的配置类中包含的函数的输出,例如:

@Bean
public List<Converter<?,?> myConverters(){
Arrays.asList(new FooToBarConverter(), new BarToFooConverter());
}

非常感谢您的帮助。

附注既然你这么擅长 Spring ,介意看看我的spring-data-rest-mvc related question吗? ?请并谢谢您。

最佳答案

默认情况下,任何@Autowired(或@Resource)注释的Collection(或List某种类型的>Set等)将包含在上下文中发现的该类型的所有bean。您可以在 setter 中添加一个 @Autowired 并让 Spring 为您注入(inject) Controller 。

如果您需要更细粒度地控制哪些转换器应该配置,哪些转换器不应该配置,也许您应该完全配置 ConversionService

关于java - 将bean注入(inject)到spring java配置类中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23819180/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com