Будет ли (или должен) CDI предоставлять квалификаторы пакетов?

Изучая Seam 3, я обнаружил, что Seam Solder позволяет @Named аннотация, применяемая к пакетам - в этом случае все компоненты в этом пакете будут автоматически именоваться, как если бы они были квалифицированы как @Named самих себя. Я не видел слишком много преимуществ в том, чтобы делать что-то подобное (и вы можете указать мне некоторые ситуации, в которых это может быть полезно!), Но это заставило меня задуматься: не было ли разумно, чтобы CDI (или Seam Solder) позволял произвольно квалификаторы, которые будут применяться к пакетам, сохраняя ту же семантику этого @Named Классификатор? Это возможная функциональность в будущих версиях спецификации CDI? Есть ли причина не позволять это?

1 ответ

Решение

Я не видел слишком много преимуществ в том, чтобы делать что-то подобное (и вы можете указать мне некоторые ситуации, когда это может быть полезно!)

@Named (как вы наверняка знаете) делает управляемый компонент доступным из страниц JSF. Применяемый на уровне пакета, он просто назначит имя EL всем бинам в этом пакете. Хотя я согласен с вами, что это, конечно, не убойная функция, я могу себе представить, что довольно часто ко всему в определенном пакете нужно обращаться через EL. Конечно, это другой вопрос, если аннотирование всех компонентов не будет лучше с точки зрения читабельности.

Разве не было бы разумно, чтобы CDI (или Seam Solder) позволял применять произвольные квалификаторы также к пакетам, поддерживая ту же семантику этого квалификатора @Named?

@SomeQualifier применил бы один и тот же классификатор ко всем компонентам в пакете. Вопреки @Named Я с трудом могу себе представить, что в этом было бы много смысла - оглядываясь на пару проектов CDI в прошлом году, я думаю, что у меня никогда не было пакета, в котором все компоненты в нем требовали одинакового спецификатора. В некотором смысле это имеет смысл, если вы помните, что квалификаторы предназначены для слабой связи компонентов... (скажем, у вас есть интерфейс с тремя реализациями - почти наверняка они будут принадлежать разным пакетам или даже jar-файлам)

Другие вопросы по тегам