Camel OSGI:我如何获得spring应用程序上下文?

时间:2014-05-15 01:44:57

标签: spring osgi apache-camel

以下是camle-osgi示例的片段。我可以获取camel上下文但是如何获得原始的spring应用程序上下文?或者我怎么能得到“mybean”的引用?

MyRouteBuilder.java:

public class MyRouteBuilder extends RouteBuilder {
  public static void main(String[] args) throws Exception{
    new Main().run(args);
  }

  public void configure() {
    // set up the transform bean
    ModelCamelContext mc = getContext();//ok, I can get the camel context fine
    //but how to get the spring context to get to "mybean"???

    //set up routes
  }
}

beans.xml中:

<beans>
 <camel:camelContext xmlns="http://camel.apache.org/schema/spring">
    <package>org.apache.servicemix.examples.camel</package>
              -----
 </route>
 </camel:camelContext>

 <bean id="mybean" class="myclass"/>

</beans>

1 个答案:

答案 0 :(得分:0)

您不应直接使用spring上下文。而是使用弹簧功能注入所需的豆。

  1. 在spring上下文中将routebuilder定义为bean,并使用setter并注入myBean。
  2. 保留自动发现并在routebuilder中使用@Autowired等注释来注入mybean。
  3. 第三种选择是使用getContext()。getRegistry()。注册表允许按名称或类型访问spring上下文的所有bean。

    如果我们已经没有选择,那将不会是骆驼: - )

    所以另一个选择是使用camel的bean组件从spring上下文中访问bean:http://camel.apache.org/bean.html