3

我有属性文件,我想通过这个文件在我的路由中设置 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 也无法重定向我。为什么?

4

2 回答 2

1

由于 Spring 的限制,Camel 无法在其 Spring DSL 中使用 PropertyPlaceholderConfigurer。有很多方法可以实现您想要的。其中一些由链接描述。

于 2012-05-31T12:17:48.267 回答
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>

希望这有效

于 2018-03-01T15:29:24.647 回答