Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
&引用;“手动”;使用GrailsBeanBuilder或SpringGenericGroovyApplicationContext创建bean_Spring_Grails_Spring Groovy Config - Fatal编程技术网

&引用;“手动”;使用GrailsBeanBuilder或SpringGenericGroovyApplicationContext创建bean

&引用;“手动”;使用GrailsBeanBuilder或SpringGenericGroovyApplicationContext创建bean,spring,grails,spring-groovy-config,Spring,Grails,Spring Groovy Config,我有一个具有复杂创建逻辑的类(例如,使用生成器)。 早在2000年,因为XML是严格的,不是一种编程语言,我无法用它编写创建逻辑,所以我将它封装在FactoryBean中 然后,幸运的JavaConfig来了(谢谢,@cbeams)并将FactoryBean扔进了历史垃圾箱 由于GroovyConfig是一个额外的进步(不仅是一种真正的配置编程语言,而且还有DSL),我肯定会找到一种简单而优雅的方式来编写代码,尽管创建逻辑很复杂,但我没有发现任何关于这种能力的提述 我知道GroovyConfig

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

然后,幸运的JavaConfig来了(谢谢,@cbeams)并将FactoryBean扔进了历史垃圾箱

由于GroovyConfig是一个额外的进步(不仅是一种真正的配置编程语言,而且还有DSL),我肯定会找到一种简单而优雅的方式来编写代码,尽管创建逻辑很复杂,但我没有发现任何关于这种能力的提述

我知道GroovyConfig或多或少是从GrailsBeanBuilder一字不差地获得的,所以如果有办法做到这一点,它也可以在GroovyConfig中工作(祈祷吧)

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


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

仔细想想,答案似乎是“不”。似乎没有FactoryBean我无法管理,这就是为什么:

  • XML和GroovyConfig是
    BeanDefinitionReader
    s。他们正在解析配置文件(分别是XML和groovy脚本)并从中创建
    BeanDefinition
    。我在groovy脚本中编写的任何逻辑都会影响BeanDefinition(例如,我可以在
    if else
    中包装作用域)。然后,在我无法控制的后期阶段,Spring根据自己的定义创建bean对象
  • JavaConfig是不同的。它没有被解析为
    BeanDefinition
    创建的配置文件,而是在其中创建的对象是bean本身(以及带有它们的
    BeanDefinition
    s)!这意味着我在创建bean时拥有控制权,可以在不使用
    FactoryBean
    的情况下实现任何bean实例创建逻辑,而不仅仅是
    BeanDefinition
    逻辑
我不喜欢
FactoryBean
——它是一个三种方法的接口,
对象getObject()
类getObjectType()
,和
布尔isSingleton()
。和你期望的差不多-你创造了什么,它应该用什么类型,会不会只有这一个,或者我们应该期望更多。也许你有过一次与FactoryBean打交道的尴尬经历,事情变得有点疯狂,有太多的酒精,然后是一些不恰当的触摸,然后是一些你不想谈论的事情。这很酷,但那是几年前的事了,
FactoryBean
很抱歉,从那时起个人成长了很多。哈哈哈,很棒:)严肃地说,我并不讨厌FactoryBean本身,我讨厌强迫我使用冗余实体的XML。groovy问题,没有一行代码?!天哪!:)我正琢磨着去哪里偷代码。不,只是关于弹簧内部的理论。对不起,我真正需要的是一个bean创建时回调。我最终可能会那样做。