Существует ли эквивалент в CDI (СВАРКА), чтобы создать определения (как сделано в модулях Guice) и затем создать Инжектор?

Мне нравится способ, которым Guice делает это довольно прямым для ручного создания собственных модулей каждый с их собственной привязкой, сделанной в коде. CDI, с другой стороны, кажется, полагается больше на волшебный а не программный доступ к привязке SEST. Я неправильно или как можно достигнуть того же эффекта со СВАРКОЙ.

Любой пример кода ценился бы...

РАЗЪЯСНЕНИЕ

Я надеялся создать Модуль (Термин Guice извините, я не уверен в термине CDI), программно, с помощью стиля шаблона разработчика, как дано Guice на http://code.google.com/p/google-guice/.

Я создаю динамическую систему и существует потребность во мне смочь связать типы (как интерфейсы), константы и т.д., а не просто иметь Сварку динамично сканируют путь к классу и т.д. и находят и регистрируют типы. Я полагаю, что CDI статичен, javax.inject пакет не включает интерфейсов, которые позволяют тому программно связывать типы с реализациями.

ЧАСТЬ 2 РАЗЪЯСНЕНИЯ

Основная предпосылка исходного вопроса была простым наблюдением, что аннотации испеклись в, и правила, определенные в них для помощи inejctor, не могут быть изменены. Я первоначально хотел, чтобы открытый доступ к тем же интерфейсам что использование сканера пути к классу CDI создал определения для своего внутреннего пользования. В основном waht, который, как я говорю, является, я хочу слой, который позволяет мне читать аннотации и создавать определения для контейнера. Поставщик по умолчанию мог быть тем, который делает то, что происходит теперь, но если Вы хотите некоторую другую стратегию затем, там существует возможность сделать это.

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

Example1

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

Предположите, что у каждого есть компонент перезаписи URL, который для пользы аргументов имеет некоторые параметры как

  • замените этот шаблон тем шаблоном.
  • возможно, инструмент для очистки HTML

Если Вы хотите ввести этот тот же компонент с двумя различными правилами замены, но иметь инжектор инструмента для очистки HTML, Ваш застрявший. Уверенный существуют способы обойти это, но они требуют артефактов, который является, конечно, большим количеством кода.

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

СВАРКА

Этот вопрос был записан, в то время как назад, я разочаровался в Сварке. Я верю способу, которым это диктует, как его волшебство сделано, неправильное. Мне не нравится факт, который они диктуют мне, как это происходит без того, если меня способ управлять, когда или как я мог бы хотеть повторить это действие. Мне не нравится эта негибкость.

19
задан mP. 26 July 2011 в 03:39
поделиться