Будет ли (или должен) CDI предоставлять классификаторы пакетов? - PullRequest
4 голосов
/ 08 сентября 2011

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

1 Ответ

1 голос
/ 08 сентября 2011

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

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

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

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

...