Grails バージョン: 3.1.2
ドメイン オブジェクト (VersionedDomainClass) の新しいインスタンスを作成するたびに呼び出したいバージョニング サービス (VersionService) があります。VersionedDomainClass でサービスの呼び出しを処理したいのですが、これを実行しようとすると:
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
起動時にインスタンス化される VersionedDomainClass は必要ありません。おそらく、Spring がドメイン クラスの独自のインスタンスを作成しようとしているように見えますか? サービス Bean が作成されるまで、Spring がこれを行うのを防ぐ方法はありますか?