SpringBot Technology List: Server-side
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 ) |
Was this article helpful?