Wie lade ich ein Kamel-Eigenschaft in ein Bean?

Habe ich gelesen, auf der folgenden Seite Camel Eigenschaften: http://camel.apache.org/using-propertyplaceholder.html und lese auch das Buch "Camel In Action".

Fand ich Kapitel 6 "Camel In Action" sehr hilfreich bei der Festlegung Camel Eigenschaften, und ich kann laden Sie die folgenden drei Eigenschaften aus meiner config.Eigenschaften:

config.timeout=10000
config.numSamples=1000
config.defaultViz=a

Wenn ich mein Java-code, ich bin in der Lage zu sehen, die folgenden drei Werte in meinem camel-route in mein applicationContext.xml wie im thread#0 Nachrichten unter:

14669 [Camel (HelloWorldContext) thread #0 - timer://hello.world.request.timer] INFO  route1  - printing values read from config.properties file
14669 [Camel (HelloWorldContext) thread #0 - timer://hello.world.request.timer] INFO  route1  - config.timeout= 10000
14669 [Camel (HelloWorldContext) thread #0 - timer://hello.world.request.timer] INFO  route1  - config.numSamples= 1000
14670 [Camel (HelloWorldContext) thread #0 - timer://hello.world.request.timer] INFO  route1  - config.defaultViz= a

Jedoch, wenn ich versuche, übergeben Sie die variable {{config.defaultViz}} in einen String namens defaultViz in meinem SensorGenerator Java-Klasse, und drucken Sie den string bekomme ich "{{config.defaultViz}}" auf der Konsole statt der enthaltenen Wert innerhalb von {{config.defaultViz}}.

In anderen Worten, hier ist, was ich auf dem Bildschirm sehen:

Returning List
defaultViz= {{config.defaultViz}}

Aber ich will wirklich sehen, diese auf den Bildschirm:

Returning List
defaultViz=a

Also, was mache ich falsch in meinem applicationContext.xml?

AKTUALISIERT: Das Problem war, dass ich brauchte, um hinzuzufügen eine Brücke zwischen Spring und Camel, wie beschrieben in dem link, den ich oben verwiesen.

Hier ist meine AKTUALISIERTE applicationContext.xml mit der Brücke:

<?xml version="1.0" encoding="UTF-8"?>

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

    <bean
            class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" />
    <context:component-scan base-package="com.data.world2" />
    <context:annotation-config />

    <camel:camelContext id="HelloWorldContext">

<!--        Add Jackson library to render Java Map into JSON -->
        <camel:dataFormats>
          <camel:json id="jack" library="Jackson"/>
        </camel:dataFormats>

        <camel:route>
            <!-- sends a request to the hello world JMS queue every 10 seconds -->
            <camel:from
                uri="timer://hello.world.request.timer?fixedRate=true&amp;period={{config.timeout}}" />
            <camel:to uri="log:hello.world.request?level=INFO&amp;showAll=true" />
            <camel:bean ref="helloWorld" />

            <!-- now print out the map in JSON format -->
            <camel:marshal ref ="jack"/>
            <camel:convertBodyTo type="java.lang.String" />
            <camel:log message="${body}"/> 

            <!-- print out values read from config.properties file -->
            <camel:log message="printing values read from config.properties file"/>
            <camel:log message="config.timeout= {{config.timeout}}"/> 
            <camel:log message="config.numSamples= {{config.numSamples}}"/>
            <camel:log message="config.defaultViz= {{config.defaultViz}}"/>

            <!-- now log the message -->
            <camel:to uri="log:hello.world.response?level=INFO&amp;showAll=true" />

        </camel:route>

    </camel:camelContext>

<!-- creates a java.util.Properties instance with values loaded from the supplied location -->
<util:properties id="sensorProperties" location="classpath:/sensor.properties"/>

    <!--  pass in sensor.properties and defaultViz from config.properties -->
    <bean class="com.data.world2.SensorGenerator">
        <property name="sourceProperties" ref="sensorProperties" />
        <property name="defaultViz" value="${config.defaultViz}"/>
    </bean>

<!-- declare a Spring bean to use the Camel Properties component in Spring XML -->
    <bean id="properties"
          class="org.apache.camel.component.properties.PropertiesComponent">
        <property name="location" value="classpath:config.properties"/>
    </bean>
<!-- bridge spring property placeholder with Camel -->
<!-- you must NOT use the <context:property-placeholder at the same time, only this bridge bean -->
    <bean id="bridgePropertyPlaceholder" class="org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
      <property name="location" value="classpath:config.properties"/>
    </bean>

</beans>

Fand ich diese Frage, die ähnlich ist aber nicht ganz das gleiche: Die Injektion property in bean

InformationsquelleAutor erj2code | 2013-10-18

Schreibe einen Kommentar