繁体   English   中英

如何从 Camel Spring 独立应用程序中的命令行参数设置属性

[英]How do i set properties from command line args in Camel Spring standalone app

我有一个 Camel Spring 独立应用程序:

public static void main(final String[] args) throws Exception{
    Main main = new Main();
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("camel-context.xml");
    main.setApplicationContext(context);
    main.run();
} 

我有一些在配置路由时需要使用的属性。 这些属性将在启动应用程序时来自命令行参数。 路由定义:

public class MyRouteBuilder extends SpringRouteBuilder {

    @Autowired
    private Environment environment;

    @Override
    public void configure() {
        Map<String, String> loadedValues = getValuesFromProperties( envrionment );

        // route definition
    }
}

如何在配置方法中使用这些属性? 在运行应用程序之前,我不知道属性名称或值是什么。 我将拥有数以千计的可能属性。

我已经尝试使用 CommandLinePropertySource 来获取它们,但是在调用 config() 方法之后设置了这些值:

    CommandLinePropertySource clps = new SimpleCommandLinePropertySource(args);
    ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("camel-context.xml");
    context.getEnvironment().getPropertySources().addFirst(clps);
    main.setApplicationContext(context);

我也尝试过创建上下文,添加属性,然后使用我的 camel-context.xml 文件创建上下文,但这也不起作用。

将命令行参数中的属性加载到我的应用程序中的选项有哪些?

添加属性源后,您是否尝试过刷新?

context.getEnvironment().getPropertySources().addFirst(clps);
context.refresh();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM