routeContext中的PropertyPlaceholderConfigurer。无法从属性文件中设置uri

时间:2012-05-31 07:58:49

标签: java spring properties

我有属性文件,我想在此路径中设置uri:

   <beans xmlns="http://www.springframework.org/schema/beans"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
           http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd">

        <import resource="TransactionsParserConfig.xml"/>

        <bean id="transactionsValidator" class="com.class.TransactionsValidator"/>
        <bean id="transactionsValidator123" name="${ftp.host}"/> <!--here I can use property-->


        <routeContext id="transactionsRoutes" xmlns="http://camel.apache.org/schema/spring">
            <route id="routeFTP">
                <from uri="direct:start" />
<!--here I can NOT use property-->
                <from uri="ftps://${ftp.host}/?securityProtocol=SSL"/>

etc...

<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="locations">
            <array>
                <value>classpath:/ftp.properties</value>
            </array>
        </property>
    </bean>
</beans>

但看起来不允许从属性文件中设置uri。因为当我在routexContext标签之外使用$ {ftp.host}时,一切都很好。当我在routeContext中点击ctrl + mouseclick时,甚至Idea也无法重定向我。 为什么呢?

2 个答案:

答案 0 :(得分:1)

由于Spring的限制,Camel无法在Spring的DSL中使用PropertyPlaceholderConfigurer。有很多方法可以达到你想要的效果。其中一些由link描述。

答案 1 :(得分:0)

您可以使用下面提到的bean配置

<bean id="myProperties" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
    <property name="locations">
        <list>
            <value>file:/properties1.properties</value>
            <value>file:/properties2.properties</value>
        </list>
    </property>
</bean>

可以在

等java类中访问属性
@Value("${categories.insert.sql}")
private String insertQuery;

可以在驼峰上下文中访问属性,例如

<setHeader headerName="signature">
    <constant>{{api.secretkey}}</constant>
</setHeader>

希望这有效