2015-07-14 2 views
6

В настоящее время я смотрю на Guice и, похоже, он ориентирован на явное программное построение контекста через модули.Проверка Guice + classpath

Теперь я довольно привык использовать аннотации, чтобы поместить что-то в контекст и использовать сканирование классов для построения контекста.

Теперь я мог бы довольно легко добавить эту «особенность» в форму, но я бы предпочел не изобретать колесо, поэтому, если кто-то знает, есть ли расширение, которое уже делает это, скажите.

Однако, мой вопрос заключается в том, будет ли я нарушать желаемое использование и дизайн Guice, сделав это ... я пропустил вопрос о том, как/почему образ предназначен для использования в корпоративном приложении?

+0

Что вы пытаетесь сделать? У Guice есть множество привязок на основе аннотаций, которые могут служить цели, о которой вы просите. –

+0

@David - эквивалент сканирования траектории (@Autowired весной) без явного выполнения привязок в модулях. – Cheetah

+0

Отметьте этот ответ: http://stackoverflow.com/questions/25506133/guice-equivalent-of-springs-autowire-list-of-instances –

ответ

3

У Guice есть довольно умный JIT binding, что делает ненужным сканирование на тип (например, конкретные типы), в большинстве ситуаций, если нет необходимости в обязательном привязке (например, интерфейс к реализации и т. Д.).

Я лично считаю, что сканирование пакетов для компонентов весной должно быть беспорядком. Тот факт, что вам нужно явно отфильтровать то, чего вы не хотите, и получить по умолчанию «подпакеты» (что ничего не значит на языке), без простого способа сделать только пакет, в котором находятся ваши типы (без уродливый код фильтра и отражение) является чрезвычайно хрупким и подверженным ошибкам. Подход Guice к этому гораздо более изящный (соглашение модуля на пакет). Короче говоря, я нахожусь явным весной большую часть времени, чтобы поддерживать свое здравомыслие :)

+0

Hi leeor! Мне действительно интересно: как мы можем использовать привязку JIT, если мы хотим прочитать реализацию какого-либо класса из classpath как плагина? в случае, если у нас есть инъекция конкретного класса - мы не можем избежать его создания; в случае, если у нас есть инъекция реализации интерфейса - мы не можем избежать явной привязки. поэтому JIT не может нам помочь. правильно ли я понимаю? – MiamiBeach

Смежные вопросы