Как работает аннотация Spring @Autowired?

Я наткнулся на пример @Autowired :

public class EmpManager {
   @Autowired
   private EmpDao empDao;
}

Мне было интересно, как empDao получает наборы, так как нет методов установки и является закрытым.

47
задан Igor Patsian 14 August 2019 в 22:40
поделиться

3 ответа

Java позволяет отключать элементы управления доступом к полю или методу (да, сначала нужно пройти проверку безопасности) с помощью метода AccessibleObject.setAccessible () ], который является частью структуры отражения (оба Поле и Метод наследуются от AccessibleObject ). После того, как поле может быть обнаружено и записано в него, остальное сделать довольно тривиально; просто Simple Matter Of Programming .

41
ответ дан 26 November 2019 в 19:52
поделиться

Spring использует API CGLib для обеспечения автоматического внедрения зависимостей.


Ссылки

Дополнительная литература

1
ответ дан 26 November 2019 в 19:52
поделиться

Java позволяет вам взаимодействовать с закрытыми членами класса через отражение.

Ознакомьтесь с ReflectionTestUtils , который очень удобен для написания модульных тестов.

7
ответ дан 26 November 2019 в 19:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: