@Scope @Inherited @Target(value={ANNOTATION_TYPE,TYPE,FIELD,METHOD,CONSTRUCTOR}) @Retention(value=RUNTIME) public @interface RouteScoped
Every RouteScoped bean belongs to one router component owner.
It can be a @Route, or a RouterLayout,
or a HasErrorParameter.
Beans are qualified by @RouteScopeOwner
to link with their owner.
Until owner remains active, all beans owned by it remain in the scope.
When a RouteScoped bean is a router component,
an owner can be any ancestor RouterLayout, or the bean itself.
Omitting the RouteScopeOwner annotation means owner is the bean itself.
Injection with this annotation will create a direct reference to the object rather than a proxy.
There are some limitations when not using proxies. Circular referencing (that is, injecting A to B and B to A) will not work. Injecting into a larger scope will bind the instance from the currently active smaller scope, and will ignore smaller scope change. For example after being injected into session scope it will point to the same RouteScoped bean instance ( even it is destroyed ) regardless of UI, or any navigation change.
The sister annotation to this is the NormalRouteScoped. Both annotations
reference the same underlying scope, so it is possible to get both a proxy
and a direct reference to the same object by using different annotations.
Copyright © 2018 Vaadin Ltd. All Rights Reserved.