Может ли весна понять @inject заменить шва в качестве реализации JSR-299?

StackOverflow https://stackoverflow.com/questions/3055724

Вопрос

Я заметил из нескольких веб-страниц, которые, по-видимому, весна 3.0 поддерживает @inject из JSR-330. Поскольку нам очень хотелось бы использовать синтаксис JSR-299 для инъекций на зависимость в наших библиотеках как для веб-приложений, так и для автономных приложений, и иметь альтернативы для сварки, было бы неплохо, если бы весна может сделать это.

Будучи новичком для весны, я попытался загрузить распределение весеннего рамочного рамочного рамок и положить все банки на путь сборки Eclipse. Нет ввода аннотации, поэтому мой существующий тестовый проект, использующий сварные сварки, не скомпилировал.

Это может быть сделано с весной? Что мне нужно сделать, чтобы он бег?

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


Это может быть сделано. JSR-330 JAR должна быть загружена отдельно, и CGLIB для анализа вручную написано классов @configuration, а также реализация регистрации Commons.

Самая большая отличие от сварного шва, кажется, является то, что проводка должна быть написана вручную, а не волшебным образом найденным (немного более громоздким, но может сделать более надежные приложения), а также время запуска намного меньше. Я все еще новичок на весну - есть ли способ получить классы @configuration AutoDiscovered?

Это было полезно?

Решение

Из Весна 3.0.x Справочная документация:

Аннотация JSR 330's @inject может использоваться вместо @autoodowired в приведенных ниже примерах. @ INJECT не имеет необходимой недвижимости в отличие от @autowire Antotowire, которая имеет необходимое свойство для указания, если значение введена необязательна. Это поведение включено автоматически, если у вас есть банка JSR 330 на классе.

Таким образом, вы можете сделать свой код Agnostic от Di Framework с помощью @inject, но вам все равно нужно включить банку с javax.inject Классы в вашем проекте, потому что весна не отправляет их сама. Вы можете найти соответствующую банку в разделе загрузки в Код Google Google JSR-330.

Другие советы

То javax.inject Пакет не включен как часть весны 3, но он поддерживает его, если он присутствует.

Если вы посмотрите на источник для AutowiredAnnotationBeanPostProcessor, вы увидите, что конструктор использует отражение, чтобы найти javax.inject.Inject, и регистрирует сообщение, если он находит его. Там нет зависимости от времени компиляции на это.

Вам нужно будет найти банки JSR-330 из другого источника (например, Javaee 6 SDK).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top