Scala Support

Scala is a general-purpose programming language providing support for functional programming and a strong static type system. Designed to be concise,[10] many of Scala’s design decisions aimed to address criticisms of Java.

You can use Scala to create app modules.

We can use Eclipse for Scala, but for best experience, use IntelliJ IDEA.

Create Scala module

You can create a new application module using scala with following build.gradle:

apply plugin: 'scala'
apply plugin: ''

dependencies {
    compile 'org.scala-lang:scala-library:2.11.8'
    testCompile 'org.scalatest:scalatest_2.11:3.0.0'

That’s it. Your app module can now use Scala to implement business logic.

Create Services

Let’s create a simple HelloService using Scala:

package com.axelor.hello.service

trait HelloService {

  def say(what: String): Unit

and an implementation:

package com.axelor.hello.service

class HelloServiceImpl extends HelloService {

  override def say(what: String): Unit = {
    println(s"Say: ${what}")

Create Controllers

Let’s create a controller class HelloController that uses the above HelloService:

package com.axelor.hello.web

import javax.inject.Inject

import com.axelor.hello.db.Hello

import com.axelor.hello.service.HelloService
import com.axelor.rpc.{Response, ActionRequest, ActionResponse}

class HelloController @Inject() (service: HelloService) {

  def say(req: ActionRequest, res: ActionResponse): Unit = {
    val ctx = req.getContext.asType(classOf[Hello])


Now it’s time to configure our scala services. Create a Guice module:

package com.axelor.hello

import com.axelor.hello.service.{HelloService, HelloServiceImpl}

class HelloModule extends AxelorModule {

  override protected def configure(): Unit = {

That’s it…​