javax.decorator
Делегат Типа аннотации


@Target(value={FIELD,PARAMETER})
@Retention(value=RUNTIME)
@Documented
public @interface Delegate

Идентифицирует точку инжекции делегата декоратора. Может быть применен к полю, бобовому параметру конструктора или параметру метода инициализатора боба декоратора class.

 @Decorator 
 class TimestampLogger implements Logger { 
    @Inject @Delegate @Any Logger logger; 
    ... 
 } 
 
 @Decorator 
 class TimestampLogger implements Logger { 
    private Logger logger;
    
    @Inject
    public TimestampLogger(@Delegate @Debug Logger logger) { 
       this.logger=logger; 
    } 
    ... 
 } 
 

У декоратора должна быть точно одна точка инжекции делегата. Точка инжекции делегата должна быть введенным полем, параметром метода инициализатора или бобовым параметром метода конструктора.

Контейнер вводит объект делегата к точке инжекции делегата. Объект делегата реализует тип делегата и делегирует вызовы метода вдоль стека декоратора. Когда контейнер вызывает декоратора во время перехвата бизнес-метода, декоратор может вызвать любой метод объекта делегата. Если декоратор вызывает объект делегата в какое-либо другое время, вызванный метод бросает IllegalStateException.

 @Decorator 
 class TimestampLogger implements Logger { 
    @Inject @Delegate @Any Logger logger; 
    
    void log(String message) {
       logger.log( timestamp() + ": " + message );
    }
    ...
 } 
 

Автор:
Гэвин Кинг, Пит Мюр
См. Также:
@Decorator specifies that a class is a decorator.



Представьте ошибку или функцию

Авторское право © 2009-2011, Oracle Corporation и/или его филиалы. Все права защищены. Использование подвергается срокам действия лицензии.

Сгенерированный на 10-February-2011 12:41


Spec-Zone.ru - all specs in one place



free hit counter