У меня есть javax.inject в моем pom.xml, будет ли весна использовать его автоматически? - PullRequest
6 голосов
/ 05 января 2012

Я скопировал pom.xml во время прохождения онлайн-урока по mvc в Spring, и он содержал:

        <!-- @Inject -->
        <dependency>
            <groupId>javax.inject</groupId>
            <artifactId>javax.inject</artifactId>
            <version>1</version>
        </dependency>

Из того, что я понимаю, в Spring есть встроенная инъекция зависимости, будет ли это переопределятьпо умолчанию и использовать javax.inject?

Я также видел slf4j в pom's, без дальнейшей настройки в коде или в xml.

Как это работает под обложками, spring проверяет папку libи если найдена какая-либо библиотека, которая может быть переопределена, она это сделает?

Ответы [ 3 ]

10 голосов
/ 05 января 2012

Зависимость в вашем pom для javax.inject

   <dependency>
        <groupId>javax.inject</groupId>
        <artifactId>javax.inject</artifactId>
        <version>1</version>
    </dependency>

не имеет ничего общего с Spring. Он просто добавляет в проект зависимость javax.inject. Баночка с именем javax.inject-1.jar . Этот jar необходим, если вы используете аннотацию @Inject, которая также поддерживается Spring.

Вы можете использовать @ Autowired / @ Resource / @ Inject в соответствии с вашими потребностями. См. здесь для их различия, а также обсуждение на В чем разница между @Inject и @Autowired в Spring Framework? Какой использовать при каких условиях? .

Что касается slf4j, то это просто абстракция над фреймворками, такими как log4j, позволяющая подключать среду фреймворка во время выполнения. Spring-OSGI, Hibernate все используют это внутренне. Вот почему вы находите зависимость в вашем пом. Надеюсь, это прояснит ситуацию.

3 голосов
/ 05 января 2012

впрыск включает поддержку JSR 330 для пружины. Использование инъекционных аннотаций делает приложение не привязанным к весне - оно может быть переключено на Java EE 6 или приложение guice или другие поставщики, которые поддерживают спецификацию.

Вы можете использовать впрыск или впрыск пружины (или, возможно, оба).

1 голос
/ 05 января 2012

Как сказал @Aravind, зависимость javax.inject не имеет ничего общего с пружиной. и он используется для получения аннотации @Inject, он является частью стандарта Java CDI, представленного в Java EE 6 (JSR-299)

Spring использует @Inject как синоним собственной аннотации @Autowired.
@Autowired и @Inject, две аннотации работают так же, как Spring решил поддержать некоторые аннотации JSR-299 в дополнение к их собственным.

приходит к Простой фасад ведения журнала для Java (SLF4J):

Простой фасад ведения журнала для Java или (SLF4J) служит простым фасад или абстракция для различных каркасов, например, java.util.logging, log4j и logback, позволяя конечному пользователю подключиться требуемая структура ведения журналов во время развертывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...