如何使用config.groovy中定义的属性初始化域类的变量

时间:2012-07-25 08:03:18

标签: grails groovy grails-2.0

我在Config.groovy中定义了一个变量,如下所示

environments {
    development {
        training.defaultStartTime = "09:00"

    }
    production {
        training.defaultStartTime = "09:00"
    }
}

现在我想使用grailsApplication.config .defaultStartTime 在我的域类中初始化变量startTime。我正在做如下

class Training {
    def grailsApplication
    String startTime = grailsApplication.config.training.defaultStartTime
}

但是收到错误

  

“由BeanCreationException引起:创建名为'sessionFactory'的bean时出错:init方法的调用失败;嵌套异常   是org.hibernate.InstantiationException:无法实例化测试   objectcom.Training“

使用config.groovy(grailsapplication)中定义的属性初始化域类变量的最佳方法是什么

1 个答案:

答案 0 :(得分:4)

问题在于注射的工作方式。使用其默认构造函数创建bean(在域类实例的情况下),然后将DI字段设置为相应的bean。但startTime字段在构造函数中初始化 - 在DI发生之前 - 因此grailsApplication为空。

一种解决方法是创建自定义构造函数 - 有关详细信息,请参阅http://burtbeckwith.com/blog/?p=1003