У меня есть одноэлементный компонент, у которого есть метод, который создает экземпляры прототипа компонента.Я использую метод , описанный здесь , чтобы получить экземпляры bean-компонента прототипа.
public class SingletonService implements ApplicationContextAware {
private ApplicationContext applicationContext;
public void go() {
MyPrototypeBean prototype = applicationContext
.getBean(MyPrototypeBean.class);
prototype.doSomething();
}
@Override
public void setApplicationContext(ApplicationContext applicationContext)
throws BeansException {
this.applicationContext = applicationContext;
}
}
Сначала я подумал, что это достаточно хорошо, что мой экземпляр 'prototype' пойдетвыходит из области видимости при возврате метода go, что означает, что экземпляр не имеет ссылки и будет собирать мусор.
Однако одноранговый узел указал на следующее утверждение из документации :
Код клиента должен очистить объекты в области прототипа и освободить дорогостоящие ресурсы, которые содержатся в прототипе.
Похоже, что Spring сохранитссылка, и поэтому gc никогда не поднимет его?Если это так, как я могу сказать Spring, чтобы выпустить ссылку?В документации упоминается, что я могу использовать «настраиваемый постпроцессор bean-компонента», но не ясно, куда этот процессор будет вписываться и какой код он будет запускать.
Спасибо всем заранее за помощь, Рой