Spring Boot boilerplate
I built a Spring Boot boilerplate application containing a pandora box of mixed applications with common needs of projects where I’ve been working upon.
Spring Boot is a great-fucking-burst-your-time tool, helping developers to stablish application’s foundation as fast as you can run from a hungry lion on Africa’s savanna (holy crap \o/).
However, even Spring Boot being a out-of-box architectural solution, it does not ship some important features that we use in day-to-day software development life-cycle.
Here is what I’m shipping with:
- Multimodule fashion: Spring Boot depends on the parent BOM, wich is a not so good approach when you have your own project structure. This application ships Spring Boot as a dependencymanagement, instead of using parent approach.
- Swagger: for REST API endpoints documentation and self-service browser interface.
- AMQP: for message based systems, based uppon Spring AMQP.
- DI: dependency injection provided by Spring Core AOP.
- HealthCheck: for microservices health HTTP based monitoring, provided by tools like Zabbix opensource web monitoring.
- Metrics: for systems performance evaluation. You can integrate to Graphite tool. Great example of tracking provided here and monitoring here.
- CORS: for Cross Origin Resource Sharing.
- Jersey: for REST APIs endpoints implementation, based uppon JAX-RS JSR. Don’t miss the Async/Non blocking IO APIs in REST endpoints post.
- Basic Authentication: based on properties available on classpath. Returning WWW-Authenticate header, helping browsers to identify and dropdown login form.
- Archaius: providing dynamic configuration, based on updates polling, through agnostic datasources.
- Hazelcast: for master ellection, provided by this friend’s project, and a generic ellection algorithm.
The project is avaliable on my github. Fork as your needs.