существовать@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
аннотация放существовать方法上会существовать类加载后自动注入这个方法из参数,и выполните метод один раз.