У меня есть несколько сервисов Grails, которые являются синглтон-бинами Spring, а не прототипами.
Есть ли способ получить экземпляр прототипа (полностью внедренный с любыми зависимостями) того, что обычно является синглтон-бином?
Мне бы хотелось, чтобы это было в целях тестирования, чтобы я мог связываться сэкземпляр прототипа (потенциально изменяющий свой метакласс для макетирования) без риска забыть очистить после любых изменений, внесенных в экземпляр, и заставить их просочиться в другие тесты.
Я играл с этимэто немного и не повезло.Я попытался сделать что-то вроде этого:
def ctx = grailsApplication.mainContext
ctx.registerPrototype("foo", MyService)
Затем я могу запросить у Spring экземпляр MyService
def myServicePrototype = ctx.getBean("foo")
, и он каждый раз дает новый экземплярвремя, но ни у одного из экземпляров не было автоматически установлено их свойства, поэтому все они нулевые.Я предполагаю, что есть какой-то способ создания BeanDefinition и подачи его в BeanFactory с включенными некоторыми компонентами автопровода, которые, я должен пропустить.
Я надеюсь найти какое-то общее решение, которое не заставляет меня явно аннотировать целевые сервисы каким-либо образом.
Есть ли способ напрямую запросить Spring applicationContext дляпрототип версии синглтона?