我有属性文件,我想从我的路径中设置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也无法重定向我。为什么?
由于Spring限制,Camel无法在Spring的DSL中使用PropertyPlaceholderConfigurer。有很多方法可以达到你想要的效果。其中一些是由link描述的。
您可以使用下面提到的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>
希望这有效