Spring

Расскажите про аннотацию @Lookup.


Аннотация @Lookup является частью стандарта Spring Framework и используется для создания прокси-объектов, которые предоставляют новый экземпляр зависимости при каждом вызове метода. Когда метод класса аннотирован @Lookup, Spring создает прокси-объект и возвращает новый экземпляр зависимости каждый раз при вызове этого метода. Это позволяет управлять жизненным циклом зависимости и получать актуальные экземпляры при каждом вызове. Пример использования аннотации @Lookup: public abstract class PrototypeBean { public abstract SingletonBean getSingletonBean(); } @Component public class PrototypeBeanImpl extends PrototypeBean { @Lookup public SingletonBean getSingletonBean() { return null; // Метод будет переопределен Spring'ом } } @Component public class SingletonBean { // поля и методы } В этом примере класс `PrototypeBeanImpl` является прототипом (создается новый экземпляр при каждом вызове), а класс `SingletonBean` является синглтоном (один экземпляр на всё приложение). При каждом вызове метода `getSingletonBean()` в классе `PrototypeBeanImpl` , Spring создаст новый экземпляр `SingletonBean` и вернет его. Это позволяет получать актуальные экземпляры `SingletonBean` при каждом вызове. Аннотация @Lookup полезна, когда вам необходимо получать новый экземпляр зависимости каждый раз, когда он нужен, вместо использования одного и того же экземпляра из контейнера Spring.


Копировать ссылку