Spring Initializr, an open-source web-based tool for quickly bootstrapping the creation of Spring Boot projects and the technology behind start.spring.io, received several updates and additions in the recent months. These updates included the addition of a highly requested feature, the ability to explore the contents of projects in the browser before generating them. They also included a refactored and redesigned project generation API that allows for easier customization of the tool without the need to fork the project and a newly redesigned UI.
Responding to user feedback, the Spring team introduced a new project explorer feature to Spring Initializr. The highly requested feature now allows developers to "take a peek at the generated project files without having to actually download it, unzip it, etc.", says Damien Vitrac, the implementer of the feature and a member of the Spring team. Developers can use the functionality to examine how various options affect the outcome of the to-be-generated project or use it to compare against an existing project, for example.
The API behind the project creation tool also received some updates. Madhura Bhave, a member of the Spring team, described the motivation behind the changes. "The problem with the existing API was that for anyone who wanted to customize project generation, the only sensible way to do that was to fork the library…", and "[t]his made for quite a clunky developer experience." To address this, the Spring team created several new abstractions and callback interfaces. For example, the new BuildCustomizer
interface can be used to customize a Build
, one of the recently introduced abstractions, to add additional dependencies, plugins, or other custom build behavior. Furthermore, new annotations, like the @ConditionalOnPackaging
annotation, were introduced to allow for conditionally applying customizations. "The idea is that customizers can be defined in external modules (a bit similar to auto-configurations in Spring Boot) with no change to the library necessary."
Lastly, the project released a new UI as part of a "(much needed) refresh." The refresh, which strived not to introduce new functionality or modify existing, features a modern layout and user interface. More specifically, the new UI moves all of the functional features to a single-column, as opposed to the previous two-column design. Additionally, the dependency search functionality now features more descriptive metadata about dependencies. For example, in the search results, the description of the ‘Web’ dependency previously displayed as "Servlet web application with Spring MVC and Tomcat." It also showed up in the list of selected dependencies as ‘Web.’ In the new version, it now displays a more helpful description, "Build web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container", along with a more descriptive name in the selected dependency list, 'Spring Web Starter.'
For those interested in using the new features immediately, head to start.spring.io to check them out. Those interested in providing feedback or creating a custom version of Spring Initializr, make sure to check out the two related projects on Github, initializr and start-site.