没有呼叫路由的蓝图属性

时间:2017-06-13 18:16:34

标签: java blueprint-osgi

我正在尝试使用蓝图中的值初始化一些属性。但是,cm:属性只能在调用route时初始化。但我想在没有调用路由的情况下创建bean时进行初始化。我该怎么办?

DataFrame

1 个答案:

答案 0 :(得分:1)

我认为声明路由不是强制性的,但只有在设置CamelContext时,属性注入才会起作用。

您可以尝试声明一个空的Camel Context,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
    xmlns:cm="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:config="http://aries.apache.org/blueprint/xmlns/blueprint-cm/v1.1.0"
    xsi:schemaLocation="http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd">

    <!-- define configuration properties -->
    <cm:property-placeholder persistent-id="com.tommyqu.common" update-strategy="reload">
        <cm:default-properties>
            <cm:property name="activemq.group.name" value="edpDev" />
            <cm:property name="event.destinationQueue" value="edp-event" /> 
        </cm:default-properties>
    </cm:property-placeholder>

    <camelContext xmlns="http://camel.apache.org/schema/blueprint">
    <!-- No routes declared --> 
    </camelContext>

    <bean id="eventBean" class="com.tommyqu.EventBean">
        <property name="queueGroupName" value="${activemq.group.name}" />
        <property name="eventQueueName" value="${event.destinationQueue}" />
    </bean>
</blueprint>

在这种情况下,您不需要路线但是您声明了一个上下文,以便更换属性。