

The scala is very popular language now days specially while work with java bigdata technology. Here is example o Spring boot scala example code with details, Here we have used scala 2.12.1, Spring Boot,Java-8, Maven.
Table of Contents
Spring boot scala project

spring boot scala example
pom.xml
scala-library-2.12.1 contains code packages of scala.
net.alchim31.maven plugin has been used for scala jar packaging.
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.javadeveloperzone.scala</groupId>
<artifactId>spring-boot-scala-example</artifactId>
<description>This article contains spring boot scala example</description>
<version>1.0-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.4.RELEASE</version>
</parent>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<scala.version>2.12.1</scala.version> <!-- scala version -->
</properties>
<dependencies>
<dependency>
<groupId>org.scala-lang</groupId> <!-- It contains scala dependency -->
<artifactId>scala-library</artifactId>
<version>2.12.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>net.alchim31.maven</groupId>
<artifactId>scala-maven-plugin</artifactId>
<version>3.1.3</version>
<executions>
<execution>
<goals>
<goal>compile</goal>
<goal>testCompile</goal>
</goals>
</execution>
</executions>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>ScalaDemoController.scala
package com.javadeveloperzone.controller
import org.springframework.web.bind.annotation.{GetMapping, RestController}
/**
* Created by Java Developer Zone on 12-11-2017.
* This class will handle requires and code has been write in scala
*/
@RestController
class ScalaDemoController {
@GetMapping(path = Array("/demo"))
def demo={
"This is scala first spring boot application."
}
}
Application.scala
package com.javadeveloperzone
import org.springframework.boot.SpringApplication
import org.springframework.boot.autoconfigure.SpringBootApplication
/**
* Created by Java Developer Zone on 12-11-2017.
*/
@SpringBootApplication
class Application
object Application extends App {
SpringApplication.run(classOf[Application]);
}
Create JAR File
mvn install command to create jar file of scala application.
mvn install [INFO] Scanning for projects... [INFO] [INFO] ------------------------------------------------------------------------ [INFO] Building spring-boot-scala-example 1.0-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] --- maven-resources-plugin:2.6:resources (default-resources) @ spring-boot-scala-example --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] Copying 0 resource [INFO] Copying 0 resource [INFO] [INFO] --- maven-compiler-plugin:3.1:compile (default-compile) @ spring-boot-scala-example --- [INFO] No sources to compile [INFO] [INFO] --- scala-maven-plugin:3.1.3:compile (default) @ spring-boot-scala-example --- [INFO] F:\extrawork\demo\src\main\scala:-1: info: compiling [INFO] Compiling 2 source files to F:\extrawork\demo\target\classes at 1510498111040 [INFO] prepare-compile in 0 s [INFO] compile in 4 s [INFO] [INFO] --- maven-resources-plugin:2.6:testResources (default-testResources) @ spring-boot-scala-example --- [INFO] Using 'UTF-8' encoding to copy filtered resources. [INFO] skip non existing resourceDirectory F:\extrawork\demo\src\test\resources [INFO] [INFO] --- maven-compiler-plugin:3.1:testCompile (default-testCompile) @ spring-boot-scala-example --- [INFO] No sources to compile [INFO] [INFO] --- scala-maven-plugin:3.1.3:testCompile (default) @ spring-boot-scala-example --- [WARNING] No source files found. [INFO] [INFO] --- maven-surefire-plugin:2.18.1:test (default-test) @ spring-boot-scala-example --- [INFO] No tests to run. [INFO] [INFO] --- maven-jar-plugin:2.6:jar (default-jar) @ spring-boot-scala-example --- [INFO] Building jar: F:\extrawork\demo\target\spring-boot-scala-example-1.0-SNAPSHOT.jar [INFO] [INFO] --- spring-boot-maven-plugin:1.5.4.RELEASE:repackage (default) @ spring-boot-scala-example --- [INFO] [INFO] --- maven-install-plugin:2.5.2:install (default-install) @ spring-boot-scala-example --- [INFO] Installing F:\extrawork\demo\target\spring-boot-scala-example-1.0-SNAPSHOT.jar to C:\Users\Lenovo\.m2\r epository\com\javadeveloperzone\scala\spring-boot-scala-example\1.0-SNAPSHOT\spring-boot-scala-example-1.0-SNA PSHOT.jar [INFO] Installing F:\extrawork\demo\pom.xml to C:\Users\Lenovo\.m2\repository\com\javadeveloperzone\scala\spri ng-boot-scala-example\1.0-SNAPSHOT\spring-boot-scala-example-1.0-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 12.469 s [INFO] Finished at: 2017-11-12T20:18:38+05:30 [INFO] Final Memory: 25M/418M [INFO] ------------------------------------------------------------------------
Start Spring Boot scala application:
java -jar spring-boot-scala-example-1.0-SNAPSHOT.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v1.5.4.RELEASE)
2017-11-12 20:22:07.726 INFO 95776 --- [ main] scala.App : Starting App on Mahesh with PID 95776 (C:\Users\Lenovo\.ivy2\cache\org.scala-lang\scala-library\jars\scala-library-2.12.1.jar started by Lenovo in F:\extrawork\demo)
2017-11-12 20:22:07.726 INFO 95776 --- [ main] scala.App : No active profile set, falling back to default profiles: default
2017-11-12 20:22:07.866 INFO 95776 --- [ main] ationConfigEmbeddedWebApplicationContext : Refreshing org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@17f9d882: startup date [Sun Nov 12 20:22:07 IST 2017]; root of context hierarchy
2017-11-12 20:22:11.359 INFO 95776 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat initialized with port(s): 8080 (http)
2017-11-12 20:22:11.375 INFO 95776 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]
2017-11-12 20:22:11.390 INFO 95776 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet Engine: Apache Tomcat/8.5.15
2017-11-12 20:22:11.609 INFO 95776 --- [ost-startStop-1] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext
2017-11-12 20:22:11.609 INFO 95776 --- [ost-startStop-1] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 3758 ms
2017-11-12 20:22:11.875 INFO 95776 --- [ost-startStop-1] o.s.b.w.servlet.ServletRegistrationBean : Mapping servlet: 'dispatcherServlet' to [/]
2017-11-12 20:22:11.875 INFO 95776 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'characterEncodingFilter' to: [/*]
2017-11-12 20:22:11.875 INFO 95776 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'hiddenHttpMethodFilter' to: [/*]
2017-11-12 20:22:11.875 INFO 95776 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'httpPutFormContentFilter' to: [/*]
2017-11-12 20:22:11.875 INFO 95776 --- [ost-startStop-1] o.s.b.w.servlet.FilterRegistrationBean : Mapping filter: 'requestContextFilter' to: [/*]
2017-11-12 20:22:12.578 INFO 95776 --- [ main] s.w.s.m.m.a.RequestMappingHandlerAdapter : Looking for @ControllerAdvice: org.springframework.boot.context.embedded.AnnotationConfigEmbeddedWebApplicationContext@17f9d882: startup date [Sun Nov 12 20:22:07 IST 2017]; root of context hierarchy
2017-11-12 20:22:12.805 INFO 95776 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/demo],methods=[GET]}" onto public java.lang.String com.javadeveloperzone.controller.ScalaDemoController.demo()
2017-11-12 20:22:12.817 INFO 95776 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error]}" onto public org.springframework.http.ResponseEntity<java.util.Map<java.lang.String, java.lang.Object>> org.springframework.boot.autoconfigure.web.BasicErrorController.error(javax.servlet.http.HttpServletRequest)
2017-11-12 20:22:12.818 INFO 95776 --- [ main] s.w.s.m.m.a.RequestMappingHandlerMapping : Mapped "{[/error],produces=[text/html]}" onto public org.springframework.web.servlet.ModelAndView org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml(javax.servlet.http.HttpServletRequest,javax.servlet.http.HttpServletResponse)
2017-11-12 20:22:12.872 INFO 95776 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/webjars/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-11-12 20:22:12.872 INFO 95776 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-11-12 20:22:12.944 INFO 95776 --- [ main] o.s.w.s.handler.SimpleUrlHandlerMapping : Mapped URL path [/**/favicon.ico] onto handler of type [class org.springframework.web.servlet.resource.ResourceHttpRequestHandler]
2017-11-12 20:22:13.342 INFO 95776 --- [ main] o.s.j.e.a.AnnotationMBeanExporter : Registering beans for JMX exposure on startup
2017-11-12 20:22:13.468 INFO 95776 --- [ main] s.b.c.e.t.TomcatEmbeddedServletContainer : Tomcat started on port(s): 8080 (http)
2017-11-12 20:22:13.475 INFO 95776 --- [ main] scala.App : Started App in 6.655 seconds (JVM running for 7.852)
Output:
http://localhost:8080/demo

Spring boot scala example – output
Was this post helpful?
Let us know if you liked the post. That’s the only way we can improve.
