使用变量和资源导入将 Spring XML 转换为 JavaConfig

Converting Spring XML to JavaConfig with Variable and Resource Import

我有一个 spring 引导应用程序,我正在尝试将以下 spring xml 配置转换为 java 配置:

<bean id="pageDAO" factory-bean="springWSDaoFactory"
    factory-method="createPageDAO" lazy-init="true">
    <constructor-arg type="java.lang.String" value="${cds.host}" />
    <constructor-arg type="java.lang.Integer" value="${cds.port}" />
</bean>

<!-- CoreApi + plugins configuration    -->             
<import resource="classpath:coreAPI_SpringWSContext.xml"/>      
<bean name="springWSDaoFactory" class="com.blan.torque.dao.springws.SpringWSDAOFactory" lazy-init="true">
    <property name="serviceVersion" value="${service.version}"/>
    <property name="securityKey" value="${service.key}"/>
</bean>

这是我目前的java配置:

@Bean
public PageDAO pageDAO() {
    return springWSDAOFactory().createPageDAO(null, null);
}

@Bean
public SpringWSDAOFactory springWSDAOFactory() {
    SpringWSDAOFactory springWSDAOFactory = new SpringWSDAOFactory();
    springWSDAOFactory.setServiceVersion(null);
    springWSDAOFactory.setSecurityKey(null);
    return springWSDAOFactory;
}

我不知道如何在 Java 中实现 <import resource...../>,更不用说导入像 ${cds.host} 这样的变量了。我把 null 放在各处作为占位符。但是关于如何使用注释执行此操作的任何想法?

在您的配置 class 中,您可以使用注释 @ImportResource 而不是 <import resource... />

要从 属性 文件中读取字符串,请尝试使用 @Value 声明一个字符串并使用之前声明的字符串。

例如:

@Value("${service.version}")
private String serviceVersion;

然后作为参数使用

springWSDAOFactory.setServiceVersion(this.serviceVersion);

希望对你有所帮助。