I have a class with complicated creation logic (e.g. uses builder). Back in 2000, because XML is rigid and not a programming language, I couldn't code the creation logic in it, so I encapsulated it in a FactoryBean.
Then the blessed JavaConfig came (thank you, @cbeams) and threw FactoryBean to the dumpster of history.
Since GroovyConfig is an additional step forward (not only a true programming language for the configuration, but also with DSL), I was sure to find a simple and elegant way to code my way though complicated creation logic, but didn't find any mention of an ability to do so?!
I understand that GroovyConfig is more or less taken verbatim from Grails BeanBuilder, so maybe if there is a way to do it there it will also work in GroovyConfig (fingers crossed).
Please tell me I am missing something obvious and don't have to use FactoryBean again!
Sleeping on it, I think the answer is no. I am adding an answer (still hoping it will get horribly downvoted as wrong one). Please prove me wrong!
Thinking about it, it looks like the answer is "no". It looks like I can't manage without FactoryBean, that's why:
BeanDefinitionReaders. They are parsing the config files (XML and groovy script respectively) and creating BeanDefinition out of them. Whatever logic I code in the groovy script effects the BeanDefinition (e.g. I can wrap scope in if-else). Then, in later phase which I don't have the control of, Spring creates the bean objects based on the definition by itself.BeanDefinition creation, but instead the objects created in it are the beans themselves (and the BeanDefinitions with them)! Which means that I have control in the time of bean creation and can implement any bean instance creation logic without FactoryBean, not only BeanDefinition logic. If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With