Я наткнулся на пример @Autowired
:
public class EmpManager {
@Autowired
private EmpDao empDao;
}
Мне было интересно, как empDao
получает наборы, так как нет методов установки и является закрытым.
Java позволяет отключать элементы управления доступом к полю или методу (да, сначала нужно пройти проверку безопасности) с помощью метода AccessibleObject.setAccessible ()
], который является частью структуры отражения (оба Поле
и Метод
наследуются от AccessibleObject
). После того, как поле может быть обнаружено и записано в него, остальное сделать довольно тривиально; просто Simple Matter Of Programming .
Spring использует API CGLib для обеспечения автоматического внедрения зависимостей.
Java позволяет вам взаимодействовать с закрытыми членами класса через отражение.
Ознакомьтесь с ReflectionTestUtils , который очень удобен для написания модульных тестов.