Ради моего собственного образования я хотел создать простую платформу Dependency Injection, которая функционирует аналогично тому, как это делает Google Guice.Таким образом, когда класс загружается, он предварительно заполняет аннотированные поля данными из фабричного класса.
Я использую Reflections для сканирования всех своих фабричных классов во время компиляции и сохранения этих классов в статическом списке, чтобыкогда приходит время загружать мои классы, у меня есть ссылка на мои фабрики, чтобы я мог затем сканировать методы и возвращать соответствующие данные.
Где я застрял, как предварительно заполнить аннотированные поля моих классовфактически не делая никакой работы в реальном классе.Другими словами, когда класс загружен, мне нужно иметь возможность определить, помечены ли какие-либо поля конкретной аннотацией, и, если они есть, получить значение из класса фабрики.
Есть ликаким-то образом выполнить отражение класса прямо перед его загрузкой, предварительно заполнить определенные поля и затем вернуть экземпляр этого класса, который будет использоваться?
Я мог бы расширить все свои классы, которые требуют внедрения зависимостей, с помощьюбазовый класс, который выполняет всю эту работу, но я полагаю, что должен быть лучший способ, чтобы я мог просто использовать @Inject (или любую другую аннотацию, которую я решил использовать, чтобы сказать, что это поле требует DI) и «магически» всю работусделано.