Let’s Play! - My Play Framework Learning Journey (1) - Introduction


Recently I tried Play Framework and used it to build some RESTful web services in Scala and found Play to be an awesome framework to use, after clearing the initial hurdles. However, to people who are new to Play and things used by it by default (such as Guice), the learning curve might still be steep. Furthermore, I found Play’s documentation could some times be a bit more comprehensive (comparing to Spring which I have used previously), and there aren’t as many good resources one can find online for doing things in Play. These can easily turn people away, which I feel is a shame because Play is really great and enjoyable once you clear the initial hurdles.

The official online documentation is fine with concepts, but when it comes to how-tos and working examples, there are times I could not find what I want from it. There is also no specific section for building RESTful web services.

Therefore, I think it might be useful to share some of the things I have learnt along the way (some of which was learnt from the excellent Lightbend support team) so that more people can benefit from them and try out Play. That’s why I started this blog series. Hope you will find it useful.


The following are used and will be mentioned in the subsequent blogs. I will blog in details about use of certain technologies other than Play, such as Guice, Scala-Guice, Slick, etc.

  • Play Framework - 2.5.11+
  • Dependency Injection - Guice/Scala-Guice
  • Relational Database - H2/HSQLDB for local testing and Oracle for production
  • Database Access - Slick 3, HikariCP
  • Swagger Specification - Swagger-Play2
  • Unit Testing - ScalaTest, Mockito
  • Containerization - Docker
  • Caching - Caffeine
  • Build tool - SBT

Play Start Projects

The Play Framework website provides a list of starter projects. Since I am building a RESTful web service, I used the Play Scala REST API Example. The guide for this starter project is located here.

Stay tuned…

Go Top
comments powered by Disqus