我有一个具有复杂创建逻辑的类(例如使用构建器)。 早在2000年,由于XML是严格的而不是编程语言,我无法在其中编写创建逻辑,因此我将其封装在FactoryBean中。
然后祝福的JavaConfig来了(谢谢你,@ cbeams)并将FactoryBean扔给历史垃圾站。
由于GroovyConfig是向前迈出的一步(不仅是配置的真正编程语言,而且还有DSL),我确信通过复杂的创建逻辑找到了一种简单而优雅的编码方式,但是没有找到任何提及这种能力的事情吗?!
我知道GroovyConfig或多或少都是从Grails BeanBuilder中逐字逐句采用的,所以也许如果有办法在那里做它也可以在GroovyConfig中工作(手指交叉)。
请告诉我,我遗漏了一些明显的东西,不必再次使用FactoryBean了!
睡在上面,我认为答案是否定的。我正在添加一个答案(仍然希望它会被错误地用作错误的答案)。请证明我错了!
答案 0 :(得分:2)
考虑一下,看起来答案是“不”。看起来如果没有FactoryBean
我就无法管理,这就是原因:
BeanDefinitionReader
。他们正在解析配置文件(分别是XML和groovy脚本)并从中创建BeanDefinition
。无论我在groovy脚本中编写什么逻辑都会影响BeanDefinition(例如,我可以在if-else
中包装范围)。然后,在后期中我无法控制,Spring根据定义自己创建bean对象。BeanDefinition
创建的配置文件解析的,而是在其中创建的对象 bean本身(和它们的BeanDefinition
)!这意味着我在创建bean时可以控制,并且可以在没有FactoryBean
的情况下实现任何bean实例创建逻辑,而不仅仅是BeanDefinition
逻辑。