SpringApplication
SpringApplication is a normal Spring Boot class, it contains the run() method in order to bootstrap the spring application.
Externalized Configurations
In general, a single project can have multiple modules, where each and every module can have multiple developers, all the developers are working on a common resource like servers , databases,… then all the developers have to manage the resources configurations as a separate copy in their local systems , it will provide configuration redundancy and it is very much difficult to provide changes, that is if we want to change server configurations, database configurations then we have to provide the required changes at each every developers machine, in will increase burden and it will provide unstable configurations, to overcome this problem we have to use Externalized Configurations.
In the Externalized configurations we will use a configuration externally at cloud or web , we will share the same configurations to all the developers machines. In this context if we provide changes in the externalized configuration file then that changes are applied to all the developers machines.
SpringBoot Supports Externalizable configurations.
Profiles
In general, all the Software projects are having the lifecycle phases like Analysis, Development, Testing, Production, where all the lifecycle phases require separate configurations as we maintain the separate resources like servers, databases,… for the development, Testing and Production.
In the above context, if we provide all the configurations manually on the basis of the Project lifecycle phase then it will be a burden to the developers, to overcome this problem we need an automated system as an alternative that is Profiling.
IN Profiling, we will provide a separate profile for each and every environment like Development, Testing and Production with the required configuration and we will provide switching between the profiles as per the requirement.
Spring Boot Supports Profiling feature.
Logging
To track all the activities in our project we will use Logging, Spring Boot Supports logging with the different implementations like Log4j, Slf4j,….
Internationalization
Preparing java applications as per the users local conventions is called Internationalization.
Spring Boot Supports Internationalization in order to provide services on the basis of the users local conventions.
JSON
Spring Boot Supports JSON libraries in order to represent request and response data in the JSON format. Spring Boot supports JSON implementations like Gson, Jackson, Json-B,…
Developing web applications
Spring Boot supports Web application development on the basis of the Spring WEB MVC module, to provide support for the web application development only Spring Boot has embedded servers like Tomcat, Jetty, Undertow,…
Working with SQL Databases
Spring is able to support the SQL databases like Oracle, Mysql, … to perform the database operations.
Spring Boot has inbuild H2 database.
Working with No SQL Databases
Spring is able to support the SQL databases like MongoDB, Neo4j, Cassandra, … to perform the database operations.
Cache
Spring Boot supports the cache mechanisms internally in order to hold the results for the future purposes.
Messaging
Spring Boot supports the Messaging Services in order to send and receive messages from one machine to another machine or from one Microservice to anotherMicroservice.
Spring boot supports the JMS implementations like ActiveMQ, RabbitMQ, Kafka,…
Accessing REST Services
Spring Boot Supports Restful Services by having a predefined module in the form of “Spring Boot REST”.
Validations
Spring Boot Supports bean validations as part of the data Validations, it has the Hibernate bean validations libraries internally.
Sending Mails
Spring Boot Supports Sending Mails and Receiving Mails by using Java Mail API in the Spring Boot Applications.
Distributed Transactions
Spring Boot Supports the Distributed Transactions by having JTA implementations internally.
Application Events and Listeners
Spring Boot Supports Event Handling in order to perform some activities when the application events are raised.
Admin Features
Spring Boot Supports the admin features like Health checking, Metrics,… through the Spring Boot Actuators.
Properties Files and Yaml Files
Spring Boot Uses properties files and yaml files to provide the configuration details on the Spring boot applications.
MAVEN and GRADLE Support
To prepare and execute the applications Spring Boot has the support for the build tools like MAVEN, GRADLE.
Spring Boot Security
Spring Boot Supports the Security mechanisms like Authentication and Authorization Mechanisms.