You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Boot中applicationContext.xml转Java Config的问题处理

Spring XML配置转Spring Boot Java Config问题汇总

需求说明

需要将原有Spring项目的applicationContext.xml配置迁移为Spring Boot项目的Java Config配置,原始XML配置如下:

<bean id="InitialHandler" class="package.InitialHandler" 
  scope="prototype">
  <property name="rawResponseTemplate" 
   ref="rawResponseRestTemplate"/>
  <property name="mimeMapper" ref="initialMimeMapper"/>
</bean>

<bean id="rawResponseRestTemplate" 
   class="org.springframework.web.client.RestTemplate">
  <property name="messageConverters">
    <list>
        <bean class="package.CommonDocumentRawMessageConverter"/>
    </list>
  </property>
</bean>

<bean id="initialMimeMapper" 
class="package.ConfigurationBasedMapper">
  <property name="configuration" ref="initialMimeConfig"/>
</bean>

<bean id="initialMimeConfig" 
class="org.apache.commons.configuration.XMLPropertiesConfiguration" 
scope="singleton">
  <constructor-arg type="java.net.URL" 
 value="classpath:FileINeedLoaded.xml"/>
  <property name="reloadingStrategy" ref="ReloadingStrategy"/>
</bean>

// CommonDocumentRawMessageConverter代码片段
import org.springframework.http.converter.HttpMessageConverter;
public class CommonDocumentRawMessageConverter implements 
  HttpMessageConverter<CommonDocument>  {}

已实现的Java Config代码

@Bean
public RestTemplate rawResponseRestTemplate() {
    RestTemplate rawResponseRestTemplate = new RestTemplate();
    rawResponseRestTemplate.setMessageConverters(msgConverters());    
    return rawResponseRestTemplate;
}

private List<HttpMessageConverter<?>> msgConverters() {
    List<HttpMessageConverter<?>> newList = new ArrayList<HttpMessageConverter<?>>();
    newList.add(new CommonDocumentRawMessageConverter());
    return newList;
}

启动报错信息

项目编译正常,但启动时抛出如下异常:

***************************
APPLICATION FAILED TO START
***************************

Description:

Failed to bind properties under 'prop.mime-mapper' to 
package.util.Mapper<java.lang.String>:

Property: prop.mime-mapper
Value: propMimeMapper
Origin: "prop.mimeMapper" from property source "Config resource 'class 
path resource [application.yml]' via location 'optional:classpath:/' 
(document #0)"
Reason: org.springframework.core.convert.ConverterNotFoundException: No 
converter found capable of converting from type [java.lang.String] to 
type [package.util.Mapper<java.lang.String>]

Action:

Update your application's configuration

相关代码片段

Prop配置类

@Getter
@Setter
public class propConfig {
   private String randomProp;
   private Mapper<String> mimeMapper;
   private RestTemplate rawResponseTemplate;
}

业务Service类

@Slf4j
@Service
public class PropService extends DocumentManagementService {

private final RestTemplate rawResponseTemplate;
private final Mapper<String> mimeMapper;

public PropService(@Autowired PropConfig propConfig) {
    this.rawResponseTemplate = propConfig.getRawResponseTemplate();
    this.mimeMapper = propConfig.getMimeMapper();
}
}

解决方案

报错原因是误将原XML中ref类型的Bean引用配置到了application.yaml中,Spring Boot会尝试将yaml中存储的字符串值转换为配置类对应的Mapper、RestTemplate类型,没有对应类型转换器就会抛出上述异常。
直接删除application.yaml中对应Mapper和RestTemplate类型的配置项即可,这类Bean引用不需要在yaml中配置,直接通过Java Config注册到Spring容器后即可正常注入使用。


内容的提问来源于stack exchange,提问作者user1746582

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:24:07