3

我有一个具有复杂创建逻辑的类(例如使用生成器)。早在 2000 年,由于 XML 是死板的,不是编程语言,我无法在其中编写创建逻辑,所以我将它封装在 FactoryBean 中。

然后祝福的 JavaConfig 来了(谢谢你,@cbeams)并将 FactoryBean 扔进了历史的垃圾箱。

由于 GroovyConfig 是向前迈出的一步(不仅是一种真正的配置编程语言,而且还有 DSL),虽然复杂的创建逻辑,但我肯定找到了一种简单而优雅的方式来编写我的方式,但没有找到任何提及有这样的能力吗?!

我知道 GroovyConfig 或多或少是从 Grails BeanBuilder 中逐字提取的,所以也许如果有办法在那里做到这一点,它也可以在 GroovyConfig 中工作(手指交叉)。

请告诉我我遗漏了一些明显的东西,不必再次使用 FactoryBean!

睡在上面,我想答案是否定的。我正在添加一个答案(仍然希望它会因为错误而被严重否决)。请证明我错了!

4

1 回答 1

2

仔细想想,答案似乎是“不”。看起来我不能没有FactoryBean,这就是为什么:

  • XML 和 GroovyConfig 是BeanDefinitionReaders。他们正在解析配置文件(分别是 XML 和 groovy 脚本)并从中创建BeanDefinition。无论我在 groovy 脚本中编写什么逻辑都会影响 BeanDefinition(例如,我可以将作用域包装在 中if-else)。然后,在我无法控制的后期阶段,Spring 根据自己的定义创建 bean 对象。
  • JavaConfig 是不同的。它不会被解析为用于BeanDefinition创建的配置文件,而是在其中创建的对象是bean 本身(以及BeanDefinition带有它们的 s)!这意味着我可以控制 bean 创建的时间,并且可以实现任何 bean 实例创建逻辑FactoryBean,而不仅仅是BeanDefinition逻辑。
于 2014-10-08T06:51:30.523 回答