我在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)中定义的属性初始化域类变量的最佳方法是什么
答案 0 :(得分:4)
问题在于注射的工作方式。使用其默认构造函数创建bean(在域类实例的情况下),然后将DI字段设置为相应的bean。但startTime
字段在构造函数中初始化 - 在DI发生之前 - 因此grailsApplication
为空。
一种解决方法是创建自定义构造函数 - 有关详细信息,请参阅http://burtbeckwith.com/blog/?p=1003