установить заголовок в верблюжьем маршруте с бобом ref - PullRequest
0 голосов
/ 20 октября 2018
 from("direct:myRoute1")
                .bean(new DemoRoute(), "test(Demo,xxx)")
                .end();


 from("direct:myRoute2")
                .bean(new DemoRoute(), "test(Demo,xxx)")
                .end(); 



public interface Shape

@Component
class Circle implements Shape{
}

@Component
class Square implements Shape{}

Я хочу внедрить реализацию Shape в маршрут test(Demo,xxx)

  1. Может setHeader () помочь добавить реализацию Shape в маршрут.
  2. Может ли бытьальтернатива, кроме установки заголовка на верблюжьем маршруте, так как у него есть свои плюсы и минусы

Плюсы и минусы настройки лота заголовков в Camel Exchange

1 Ответ

0 голосов
/ 26 октября 2018

Вот решение для обхода Camel:

Поскольку вы сами создаете экземпляр компонента и не полагаетесь на Spring для управления им, вы можете передать реализацию Shape через конструктор.

Добавитьполе Shape в вашем классе DemoRoute:

public class DemoRoute {

        private  final Shape shape;


        public DemoRoute(Shape shape) {
            this.shape = shape;
        }

        // test method that uses shape
    }

А в вашем классе конфигурации Route настройте его следующим образом:

@Component
public class CustomRoute extends RouteBuilder {

    private final Square square;
    private final Circle circle;

    CustomRoute(Square square, Circle circle){
      this.square = square;
      this.circle = circle;
    }


    @Override
    public void configure() throws Exception {
        from("direct:myRoute1")
                .bean(new DemoRoute(circle), "test(Demo,xxx)")
                .end();


        from("direct:myRoute2")
                .bean(new DemoRoute(square), "test(Demo,xxx)")
                .end();
    }
}
...