@DependsOn для подклассов - PullRequest
       72

@DependsOn для подклассов

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

@DependsOn может использоваться, чтобы гарантировать, что один EJB инициализируется перед другим EJB:

@Startup @Singleton
public class SchemaMigration {
    // ...
}

@DependsOn("SchemaMigration")
public class Crud<E extends BaseEntity> {
    // ...
}

Мне интересно, наследуют ли подклассы также неявно наследующее это ограничение?

@Startup @Singleton
public class Birds extends Crud<Bird> {
    // ...
}

@Startup @Singleton
public class Frogs extends Crud<Frog> {
    // ...
}

Я знаю, что простые аннотации Java не наследуются, но Java EE меняет правила для некоторых аннотаций.Но я не нашел конкретной информации об аннотации @DependsOn.

1 Ответ

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

DependsOn не гарантирует, что один EJB инициализируется перед другим EJB.

Пожалуйста, обратитесь к DependsOn Javadoc :

Контейнер гарантирует, что все bean-компоненты синглтона, с которыми синглтон имеет отношение DependsOn, были инициализированы до вызова метода PostConstruct синглтона.

Это работает только для конкретных экземпляров одноэлементных EJB-компонентов, использующих имя ejb ссылочного синглтона.

Что касается наследования сессионных компонентов, спецификация EJB (4.9.2.1) гласит::

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

...