Главная

Java

Spring


@Component :

аннотация используемая только в Spring !!!

package org.springframework.stereotype.Component;

Алиасы :

@Autowired :

аннотация используемая только в Spring !!!

package org.springframework.beans.factory.annotation.Autowired;

@Qualifier("bean") - используется для поиска по имени бина.
@Autowired(required = false) - Конструкция require=false сообщает фреймворку о том, что наличие соответствующего bean'а не является обязательным при компиляции программы. (не рекомендуется использовать).

Чтобы аннотация @Autowire присвоила переменной значения соответствующего bean'а, необходимо чтобы этот bean либо был объявлен в xml конфигурации приложения, либо через @Bean , @Service , @Controller ...
  1. Match by Type
  2. Match by Qualifier
  3. Match by Name
@Required аннотация для того чтобы не ругался при компиляции если не найдёт подходящие бины !!!






@Inject:

Одно из различий между @Autowired и @Inject заключается в том, что @Inject не имеет required аргумента, поэтому в случае, если нам не удастся найти подходящий объект для инъекции, произойдет сбой, в то время как @Autowired может использовать required = false и разрешить пустое поле (только если необходимо!)
package javax.inject.*
Аннотация принадлежит JSR-330 коллекции аннотаций.
  1. Match by Type
  2. Match by Qualifier
  3. Match by Name



@Resource:

@Resource аннотации являются частью JSR-250 и упакованы с Java EE.
@Resource(name = "bean") - правильно использование.
@Named - тоже самое что и в спринге @Component .
  1. Match by Name
  2. Match by Type
  3. Match by Qualifier

@Resource(name="namedFile")
private File defaultFile;


|------------|---------------|---------------|---------------|-----------------------|
|            | Setter/Field  | Constructor   | Applicable to | Matching order        |
|            | injection     | injection     | type          |                       |
|------------|---------------|---------------|---------------|-----------------------|
| @Autowired |       X       |       X       |               | Type, Qualifier, Name |
|------------|---------------|---------------|---------------|-----------------------|
| @Inject    |       X       |       X       |               | Type, Qualifier, Name |
|------------|---------------|---------------|---------------|-----------------------|
| @Resource  |       X       |               |       X       | Name, Type, Qualifier |
|------------|---------------|---------------|---------------|-----------------------|


Полезные ссылки.