骆驼 Uri 路径注释无法访问

Camel UriPath annotation inaccesibility

我正在为特定技术编写自定义组件,但带有@UriPath 注释的变量未初始化。 @UriParam 还可以。

我检查了 Kafka 和 Servlet 组件的端点源代码,但无法弄清楚它们与我的真正区别所在。

骆驼版本是:2.18.1

Endpont 就像:

@UriEndpoint(scheme = "elastic", title = "ElasticSearch", syntax = "elastic:url", label = "elastic")
public class ElasticSearchEndpoint extends DefaultEndpoint {

    @UriPath
    private String url;

    @UriParam
    private String searchType;

    public ElasticSearchEndpoint(String endpointUri, ElasticSearchComponent component) {
        super(endpointUri, component);
    }

    public Producer createProducer() throws Exception {
        return new ElasticSearchProducer(this);
    }

    public Consumer createConsumer(Processor processor) throws Exception {
        return null;
    }

    public boolean isSingleton() {
        return false;
    }

    public String getUrl() {
        return url;
    }

    public String getSearchType() {
        return searchType;
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public void setSearchType(String searchType) {
        this.searchType = searchType;
    }

}

组件由 spring 创建:

<bean id="elastic" class="elasticsearch.ElasticSearchComponent" />

有什么想法吗?

您需要从组件 class 中设置它,并从组件中显式调用 setUri。

只有 UriParam 设置为自动。

看看所有现有的 Camel 组件是如何做到的。

顺便说一句,你的端点应该是 singleton = true。