christova  

SpringBoot

#java #springboot #spring

Spring Boot is a module of the Spring Framework. It is used to create stand-alone, production-grade Spring Based Applications with minimum efforts. It is developed on top of the core Spring Framework

Spring Boot follows a layered architecture in which each layer communicates with the layer directly below or above (hierarchical structure) it.

Before understanding the Spring Boot Architecture, we must know the different layers and classes present in it. There are four layers in Spring Boot are as follows:

Presentation Layer Business Layer Persistence Layer Database Layer

Presentation Layer: The presentation layer handles the HTTP requests, translates the JSON parameter to object, and authenticates the request and transfer it to the business layer. In short, it consists of views i.e., frontend part.

Business Layer: The business layer handles all the business logic. It consists of service classes and uses services provided by data access layers. It also performs authorization and validation.

Persistence Layer: The persistence layer contains all the storage logic and translates business objects from and to database rows.

Database Layer: In the database layer, CRUD (create, retrieve, update, delete) operations are performed.

Spring Boot Flow Architecture Now we have validator classes, view classes, and utility classes. Spring Boot uses all the modules of Spring-like Spring MVC, Spring Data, etc. The architecture of Spring Boot is the same as the architecture of Spring MVC, except one thing: there is no need for DAO and DAOImpl classes in Spring boot. Creates a data access layer and performs CRUD operation. The client makes the HTTP requests (PUT or GET). The request goes to the controller, and the controller maps that request and handles it. After that, it calls the service logic if required. In the service layer, all the business logic performs. It performs the logic on the data that is mapped to JPA with model classes. A JSP page is returned to the user if no error occurred..

Annotations

1. @SpringBootApplication

The @SpringBootApplication annotation is a key entry point for Spring Boot applications. It combines three essential annotations:

  • @Configuration: Indicates that the class can be used by the Spring IoC container as a source of bean definitions.
  • @EnableAutoConfiguration: Enables Spring Boot’s auto-configuration feature, which automatically configures your application based on the dependencies in the classpath.
  • @ComponentScan: Allows Spring to scan for components, configurations, and services in the specified packages.

2. @EnableAutoConfiguration

The @EnableAutoConfiguration annotation automatically configures your Spring application based on the classpath and other beans. It eliminates the need for manual configuration, allowing developers to focus on building features rather than configuring the framework.

3. @SpringBootConfiguration

This annotation indicates that a class provides Spring Boot-specific configurations. It acts as a specialized form of the @Configuration annotation, making it clear that the class is intended for Spring Boot applications.

4. @ComponentScan

The @ComponentScan annotation specifies the packages that Spring should scan for components, configurations, and services. This helps in organizing your code and managing dependencies efficiently.

5. @RestController and @Controller

These annotations are used for defining web controllers in Spring MVC:

  • @RestController: Combines @Controller and @ResponseBody, indicating that the controller methods will return data directly in the response body.
  • @Controller: Used to define a traditional MVC controller that returns views.

6. @ResponseBody

The @ResponseBody annotation indicates that the return type of a method should be written directly to the HTTP response body. It is commonly used in RESTful web services to return JSON or XML data.

7. @PathVariable and @RequestParam

These annotations are used to bind method parameters to URL variables and request parameters:

  • @PathVariable: Binds a method parameter to a URI template variable.
  • @RequestParam: Binds a method parameter to a request parameter.

#SpringBoot #spring #annotations