anchor.diff:  
   [source,java]
   ----
  -@Route.Routes({
  -    @Route(path = "/first"),
  -    @Route(path = "/second")
  -})
  +@Route(path = "/first")
  +@Route(path = "/second")
   public void route(RoutingContext rc) {
       // ...
   }
  
positive.code: 
  import javax.enterprise.context.ApplicationScoped;
  
  @ApplicationScoped
  public class MyDeclarativeRoutes {
  
  
      @Route(path = "/", methods = HttpMethod.GET)
      public void handle(RoutingContext rc) {
          rc.response().end("hello");
      }
  
      @Route(path = "/hello", methods = HttpMethod.GET)
      public void greetings(RoutingContext rc) {
          String name = rc.request().getParam("name");
          if (name == null) {
              name = "world";
          }
          rc.response().end("hello " + name);
      }
  }
  ----
  
  The `@Route` annotation indicates that the method is a reactive route.
  Again, by default, the code contained in the method must not block.
  The method gets a https://vertx.io/docs/apidocs/io/vertx/ext/web/RoutingContext.html[`RoutingContext`] as a parameter.
  From the `RoutingContext` you can retrieve the HTTP request (using `request()`) and write the response using `response().end(...)`.
  
  More details about using the `RoutingContext` is available in the https://vertx.io/docs/vertx-web/java/[Vert.x Web documentation].
  
  
negative.code: 
  The registration is done using `Filters.register`.
  The first parameter is the handler receiving the `RoutingContext`.
  The handler is likely required to call the `next()` method to continue the chain.
  The second parameter is the priority used to sort the filters - filters with higher priority are called first.
  
  == Conclusion
  
  