Каковы отношения между Spring и javax.enterprise.inject? - PullRequest
4 голосов
/ 07 июня 2010

Я читал статью в Википедии о серверах приложений Java EE здесь:

http://en.wikipedia.org/wiki/Java_Platform,_Enterprise_Edition#Java_EE_5_certified

В нем говорится, что 2 API, которые реализуют Java App Services, являются:

javax.enterprise.inject
javax.enterprise.context

Они оба относятся к контексту приложения и внедрению зависимостей JSR-299. Я никогда не слышал об этих API раньше. Spring реализует эти API? Будет ли это иметь значение для кого-либо, если они это сделают?

Ответы [ 2 ]

3 голосов
/ 07 июня 2010
  • JSR-330 определяет набор аннотаций (javax.inject), которые должны использоваться в различных структурах внедрения зависимостей. Спецификацией руководили Род Джонсон (из Spring) и Боб Ли из (Google Guice)
  • (частично) из-за спецификаций, пружин и направляющих поддерживают этот набор аннотаций

Это та часть JavaEE, которая используется весной.

Тот же набор используется JSR-299, которым руководит Гэвин Кинг из JBoss. Однако JSR-299 (также известный как CDI) использует javax.enterprise.inejct/context и представляет собой совершенно новую инфраструктуру внедрения зависимостей. Он основан на идеях Spring, Guice и Seam, но формально определен как JSR и направлен на охват многих угловых случаев, а также на плавную интеграцию с другими частями JavaEE.

JSR-299 определяет как API, так и SPI, чтобы можно было разработать конкретные реализации. Текущие реализации: JBoss Weld , Apache OpenWebBeans и Resin CanDI .

Итак, чтобы ответить на ваш вопрос - нет прямой связи между javax.enterprise.inject и пружиной.

2 голосов
/ 07 июня 2010

Spring поддерживает @Inject JSR-330 - его можно использовать вместо @Autowired (за исключением того, что у него нет свойства required).

Вам также необходимо иметь банку JSR 330 на пути к классам.

http://static.springsource.org/spring/docs/3.0.x/spring-framework-reference/html/beans.html#beans-autowired-annotation

...