【发布时间】:2015-03-14 18:01:31
【问题描述】:
当我使用 Camel 时,几乎我编写的每个方法都有 Exchange 作为参数,以便通过自动绑定获取当前的交换。
类似的东西:
class MyClass
{
void doSomething(Exchange exchange, ........)
{
exchange.getIn().....
.......
}
}
有没有办法在不将其指定为参数的情况下获取当前交换?
也许是这样的......?
class MyClass
{
@ExchangeAware
Exchange exchange;
void doSomething(........)
{
exchange.getIn().....
.......
}
}
更新
我实际上并没有考虑使用@ExchangeAware 天真地注入一些(哪个?:))特定的交换,但更多的是作为向框架发出信号以拦截对该字段的任何访问的一种方式。此时,框架应该使用如果它必须绑定一个交换参数(而不是使用当前的交换引用(可能为空))会使用的交换。
但是为什么不让它变得更简单呢。这样做怎么样:
class MyClass
{
@ExchangeAware
Exchange getExchange() {return null;}
void doSomething(........)
{
getExchange().getIn().....
.......
}
}
框架可以用返回当前交换的方法覆盖@ExchangeAware 方法。
【问题讨论】:
标签: java spring dependency-injection apache-camel