×
Back to book

SpringBot Technology List: Server-side

This article summarises the testing technologies used by SpringBot and provides a list of learning resources.

The Spring framework is the most popular modern Java application framework according to the 2019 Github developer survey. We take advantage of its suite of features as part of SpringBot applications. The SpringBot server-side application is built using Java Spring Boot. Below is a list of resources available to help you become familiar with Spring Boot:

Resource Description Learn Extended Resources
Spring The Spring Framework provides a comprehensive programming and configuration model for modern Java-based enterprise applications used on any kind of deployment platform. A key element of Spring is the infrastructure support at the application level; Spring focuses on the "plumbing" of enterprise applications so that teams can focus on application-level business logic without unnecessary ties to specific deployment environments. Learn Spring Spring Docs
Spring Boot Spring Boot makes it easy to create stand-alone, production-grade Spring-based applications that you can "just run". It takes an opinionated view of the Spring platform and third-party libraries so you can get started with minimum fuss. Most Spring Boot applications need minimal Spring configuration. Learn Spring Boot Spring Boot Docs
Spring Security Spring Security is a powerful and highly customisable authentication and access-control framework. It is the de-facto standard for securing Spring-based applications. Spring Security is a framework that focuses on providing both authentication and authorisation to Java applications. Like all Spring projects, the real power of Spring Security is how easily it can be extended to meet custom requirements. Learn Spring Security Spring Security Docs
Spring Data Spring Data's mission is to provide a familiar and consistent Spring-based programming model for data access, while still retaining the special traits of the underlying data store. It makes it easy to use data access technologies, relational and non-relational databases, map-reduced frameworks, and cloud-based data services. This is an umbrella project which contains many sub-projects that are specific to a given database. The projects are developed by working together with many of the companies and developers that are behind these exciting technologies. Spring Data
Gradle We use Gradle for two different purposes: to help automate our local environment setup, and to use plugins to handle common configurations between different projects. Spring Boot has a plugin which integrates with Gradle, which we use to auto-configure a lot of things, alongside the plugins listed below. Learn Gradle Gradle Docs
Maven Repositories While we use Gradle for plugins, in SpringBot, we make use of Maven Central for repositories, as it can work with both Maven and Gradle. We also support the Maven local repository to allow for any local dependencies to be integrated within our application for use during development. While this is supported, we strongly discourage this use for any environment outside of the a local development one. Maven Repositories Maven Central
GraphQL SpringBot supports both the traditional REST API as well as the more modern GraphQL. GraphQL is a query language designed and developed by Facebook. Many people claim that GraphQL is the new REST. Our development team couldn't come to a consensus so we thought, why not both?. Our server utilises GraphQL to provide more flexible accessibility while at the same time, still having a fully documented OpenAPI available for any third party integrations. To make developing with GraphQL easier, we make use of Voltair and Voyager (see below). These two Spring Boot dependencies allow the discerning developer to easily explore their API. We make use of GraphQL Java Tools to manage the GraphQL schemas. Introduction to GraphQL, Getting Started with GraphQL and Spring Boot GraphQL Offical Site GraphQL For Spring, GraphQL Java Tools
QueryDSL While Hibernate JPA provides fantastic tooling, constructing complex queries can still be a lot of work. SpringBot makes use of another layer on top of a given repository to help combat this. QueryDSL is used to assist in building more flexible and dynamic queries for filters and search. QueryDSL plays well with JPA and provides an API which is easier to use than Hibernates. QueryDSL Doc
Java (v11) While Spring supports many different versions of Java, SpringBot does not. While we have the intention of supporting the newest version of Java with long term support, SpringBot was built with support for Java 11 or greater.
Swagger Swagger is an open source standard for OpenAPIs. SpringBot makes use of this with Springfox to automatically create the Swagger API documentation. Swagger Doc Springfox
Quartz Scheduler We use Quartz Scheduler to manage our scheduled jobs, since its ability to work in a clustered environment differs from the core Spring scheduling functionality. Quartz doc
PostgreSQL Behind every good Spring application is a good database, and as all good children believe, PostgreSQL is "The World's Most Advanced Open Source Relational Database". As such, SpringBot supports PostgreSQL out of the box. While PostgreSQL is our preferred database, Spring is not fussy and it is a simple task to switch to a different database technology. PostgreSQL Doc
H2 For embedding databases, a common technology to use is H2 as it makes the process simple. In SpringBot, we use H2 for testing purpose as it provides a good embedded database for testing. H2 is already configured in unit and integration tests in the server-side H2 Database
Lombok Java is well known for its verbosity. To help combat this and assist in the creation of more readable, maintainable code, we make use of Project Lombok, which is a library that abstracts away large portions of boiler plate code. Lombok is supported by most IDEs and build tools, with first party support for Intellij, Eclipse and VS Code. Using Lombok Reference of Lombok Features
Voyager Represent any GraphQL API as an interactive graph. With GraphQL Voyager, you can visually explore your GraphQL API as an interactive graph. This is a great tool when designing or discussing your data model. It includes multiple sample schemas and also allows you to connect it to your own GraphQL endpoint. By default, Voyager is enabled in dev mode and is located at http://localhost:8080/voyager (or wherever your server-side is hosted). Voyager
Altair Altair makes it very easy and delightful to test your GraphQL queries and server implementations, providing you with all the features you would need. It provides a user-friendly interface to test and use GraphQL queries from the server-side. By default, Altair is enabled on the server-side when in dev mode, and is located at http://localhost:8080/altair (if your server-side is hosted at localhost:8080)