существовать@Component
аннотацияв категории,Использовать снова@Resource
или@Autowired
аннотация。Это приведет квнедрение зависимостейнеудача。
Это потому, что пружина загружает их в другом порядке.,существоватьиспользовать@Component
аннотация Воляbeanсоздан дляspringконтейнеркогда внутри,потому что@Autowired
дасуществоватьэтотbeanсреди,в это время@Autowired
Автозагрузка еще не завершена,Таким образом, услуга, вызывающая внедрение зависимостей, равна нулю.
Весеннее приложение,@Component
аннотацияиспользуется для Воля Классы, помеченные как доступные для автоматического сканированияизкомпоненты。когдаSpringконтейнер При запуске,Будет сканировать@Component
аннотациясорт,и создайте их экземпляры как bean-компоненты. Эти бобы будут добавлены в фабрику бобов контейнера Spring.,для использования в приложениях.
@Autowired
аннотацияиспользуется для Весеннее приложениеруководитьвнедрение зависимостей。когдаSpringконтейнер Создать с@Autowired
аннотацияизbeanчас,Соответствующие типы будут автоматически найдены для внедрения. Если обнаружено несколько типов соответствия,Будет выброшено исключение.
@Resource
аннотация ХОРОШОиспользуется для Весеннее приложениеруководитьвнедрение зависимостей。когдаSpringконтейнер Создать с@Resource
аннотацияизbeanчас,Сопоставление имен будет использоваться в первую очередь для внедрения. Если подходящее имя не найдено,Соответствие типов будет использоваться для внедрения.
поэтому,Весеннее приложение,@Component
аннотациясортвстречасуществовать@Autowired
или@Resource
аннотациясортбыл загружен раньше。@Autowired
аннотациявстреча优先использовать类формасоответствоватьруководитьвнедрение зависимостей,и@Resource
аннотация则встреча优先использоватьимясоответствоватьруководитьвнедрение зависимостей。
существоватьиспользовать@Component
、@Autowired
или@Resource
аннотацияруководитьвнедрение При использовании зависимостей также необходимо обратить внимание на следующие моменты:
@Autowired
аннотацияинъекция多个соответствоватьсортформа,Можно использовать@Qualifier
аннотация Указанный бетонизbeanимя。@Autowired
или@Resource
аннотация Инъекция не требуетсяизполагаться,Можно использовать@Autowired(required=false)
или@Resource(required=false)
。@Autowired
или@Resource
аннотацияинъекцияизполагаться不存существовать,Можно использовать@Autowired(required=false)
или@Resource(required=false)
,И выполнить соответствующую обработку в коде.@Autowired
или@Resource
аннотацияинъекцияизполагаться可以为null,Можно использовать@Autowired(required=false)
или@Resource(required=false)
,И выполнить соответствующую обработку в коде.@Autowired
или@Resource
аннотацияинъекцияизполагаться可以为null,Можно использовать@Autowired(required=false)
или@Resource(required=false)
,И выполнить соответствующую обработку в коде.@Component
public class Test {
private final Logger logger = LoggerFactory.getLogger(this.getClass());
// @Autowired
// private UserServer userServer;
private static UserServer userServer;
@Autowired
public void setUserServer(UserServer userServer) {
Test.userServer = userServer;
}
}
Пучок@Autowired
аннотацияпомещатьсуществовать方法上встречасуществовать类加载后自动инъекцияэтот方法изпараметр,и выполните метод один раз.