gpt4 book ai didi

java - Spring Beans : Scan for Converters, 注入(inject) CustomConversionServiceFactory

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:06:48 24 4
gpt4 key购买 nike

我有一个 MyAppConversionServiceFactoryBean,我正在注册它:

<bean id="conversionService" class="com.MyProject.MyAppConversionServiceFactoryBean">
<property name="messageSource" ref="messageSource"/>
<property name="converters">
<set>
<bean class="com.MyProject.XRepresentationConverter" />
<bean class="com.MyProject.YRepresentationConverter" />
<bean class="com.MyProject.ZRepresentationConverter" />
</set>
</property>
</bean>

我可以继续列出我们写入此列表的每个转换器,但我希望能够对其进行配置,这样就没有必要了,并且转换器会以某种方式自动在我的工厂中注册。

侧边栏 1:如果自定义工厂无法做到这一点,那么默认的 spring 工厂可以吗?

侧边栏 2: 如果第一部分和侧边栏 1 都不可能,是否可以将转换服务 @Autowired 转换到转换器中(这样它们就可以轻松地相互调用)?尝试使用 @Autowired ConversionService conversionService 之前给我带来了一些问题,因为当它仍在忙于创建服务时无法将 conversionService 连接到对象中。

注意:我们使用的是 Spring,而不是 Spring MVC。我对此无法控制,因此不幸的是,该路线上的任何解决方案都将无法使用。我几乎可以更改有关配置和 Java 类的任何其他内容,但不能更改总体工具。

最佳答案

@Vikdor 对这个问题的评论为我指明了正确的方向。

Spring 显然能够(我亲自问过的人都不知道这一点)通过带有 @Autowired 注释的扫描过程收集 bean 集合。以下是我需要实现的与帖子中的配置相同的效果:

applicationContent.xml 必须有:

<context:component-scan base-package="com.MyProject"/>
<bean id="conversionService" class="com.MyProject.MyAppConversionServiceFactoryBean" />


MyAppConversionServiceFactoryBean.java:

public class MyAppConversionServiceFactoryBean implements
FactoryBean<ConversionService>, InitializingBean {

@Autowired
private Set<BaseConverter> converters;

}


然后我所有的转换器现在都有 @Component 注释。

Relevant Docs on @Autowired请简要提及它可用于收集一个类型的所有 beans,但我不知道它可以在没有 this thread by Grzegorz Oledzki 的情况下用于任何收集类型。它解决了我问题的一般形式,但沿着哲学路线进行。

关于java - Spring Beans : Scan for Converters, 注入(inject) CustomConversionServiceFactory,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12094871/

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