leftovers...

about grails groovy

Grails 3.0.8 リリース!!イベント関連向上!

Grails 3.0.8 リリースです。

今回の更新では、Spring Boot 1.2.6 にアップデートされています。
そしてReactorを使用したイベント関連が向上されています。
ドキュメントはコチラから。
http://grails.github.io/grails-doc/3.0.7/guide/async.html#events

イベント受取をgrails.events.Events traitsを実装したクラスを追加できるようになった?

import grails.events.*
import javax.annotation.*
class MyClass implements Events {
	@PostConstruct
	void init() {
		on("myEvent") {
		    println "Event fired!"
		}		
	}	
}

ApplicationクラスのdoWithSpringをオーバライド、またはComponentアノテーションでSpringビーンとして追加できます。

Closure doWithSpring() {
        {->
    		myClass(MyClass)
        }
    }

Reactor Springアノテーション
GrailsサービスでReactorが提供するアノテーションを使用できます。

import reactor.spring.context.annotation.*
@Consumer
class MyService {
	@Selector('my.event')
	void myEventListener(Object data) {
		println "GOT EVENT $data"
	}
}

GORMからのイベント
GORMはいくつかのイベントを定義しています。 ※コチラを参照
これらのイベントは、gorm:で始まるキーとして取得できます。

import org.grails.datastore.mapping.engine.event.*
...
on("gorm:preInsert") { PreInsertEvent event ->
	println "GOT EVENT $event"
}

※これらのイベントは非同期で実行されるため、パーシストやキャンセルは行えません。

Springからのイベント
Spring関連からも様々な便利なイベントが実行されています。これらのorg.springframeworkパッケージからのイベントはspring:プリフィックスに取得できます。

import org.springframework.web.context.support.*
import org.springframework.boot.context.event.*
...
on("spring:applicationStarted") { ApplicationStartedEvent event ->
	// fired when the application starts
}

on("spring:servletRequestHandled") { RequestHandledEvent event ->
	// fired each time a request is handled
}

へー。ナイスです。


Grails 3.0.x の詳細情報は、コチラを参考にしてください!
Grails 3.0.0 リリース!! - leftovers...

Grails 3.0.8 の公式リリースノートはこちら。
https://github.com/grails/grails-core/releases/tag/v3.0.8
Changelog https://github.com/grails/grails-core/issues?q=milestone%3Agrails-3.0.8
コミットリスト https://github.com/grails/grails-core/compare/v3.0.7...v3.0.8?w=1
ダウンロード https://github.com/grails/grails-core/releases/tag/v3.0.8
ドキュメント http://grails.github.io/grails-doc/3.0.x/