Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/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
Spring 我可以在域对象构造函数中调用grails服务吗?_Spring_Spring Mvc_Grails_Grails 3.1 - Fatal编程技术网

Spring 我可以在域对象构造函数中调用grails服务吗?

Spring 我可以在域对象构造函数中调用grails服务吗?,spring,spring-mvc,grails,grails-3.1,Spring,Spring Mvc,Grails,Grails 3.1,Grails版本:3.1.2 我有一个版本控制服务(VersionService),每当我创建一个域对象(VersionedDomainClass)的新实例时,我都想调用它。我希望VersionedDomain类处理调用该服务,但当我尝试这样做时: class VersionedDomainClass { transient def versionService short businessVersion VersionedDomainClass () {

Grails版本:3.1.2

我有一个版本控制服务(VersionService),每当我创建一个域对象(VersionedDomainClass)的新实例时,我都想调用它。我希望VersionedDomain类处理调用该服务,但当我尝试这样做时:

class VersionedDomainClass {

    transient def versionService

    short businessVersion

    VersionedDomainClass () {
         this.businessVersion = versionService.getNextVersion(this.class)
    }

}
在启动期间调用构造函数,此时versionService仍然为null,因此我得到一个NPE:

Caused by: java.lang.NullPointerException: Cannot invoke method getNextVersion() on null object

我不需要在启动时实例化任何VersionedDomain类;看起来Spring正试图创建自己的域类存在,也许吧?在创建服务bean之前,是否有任何方法阻止Spring执行此操作?

您可以使用
beforeinert()
来初始化
businessVersion

class VersionedDomainClass {

    transient def versionService

    short businessVersion

    /*
     * I get called only once;
     * right before I'm saved in the db for the first time.
     */
    def beforeInsert() {
        businessVersion = versionService.getNextVersion(this.class)
    }
}