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