Spring Boot — шпаргалка по аннотациям, часть. 1б

Spring Boot — шпаргалка по аннотациям, часть. 1б

6 января 2023 г.

В продолжение Части 01/a этой статьи давайте продолжим наше путешествие аннотаций Spring Boot. Итак, как вы думаете, какой процент (глубина и протяженность) аннотаций Spring Boot вы действительно знаете? Это включает в себя аннотации во всей их красе и силу, которую они приносят со всеми своими «опциями».

Я уверен, что каким бы ни был ваш ответ, я уверен, что вы оцените эту цитату Альберта Эйнштейна.

<цитата>

"Чем больше я узнаю, тем больше понимаю, как многого я не знаю".


Репозиторий GitHub

https://rebrand.ly/skp-sb-annot-git


[Весна — Стереотип]

@Сервис

Служебный уровень обычно содержит основную бизнес-логику приложения. В Spring мы обозначаем интерфейс или класс, содержащий бизнес-логику, с помощью этой аннотации.

 package xyz.sumithpuri.spring.boot.annotation.service;  

 import java.util.HashSet;  

 import org.springframework.stereotype.Service;  

 import xyz.sumithpuri.spring.boot.annotation.model.Book;  

 /**  
  * @author Sumith Puri  
  *  
  */  
 @Service  
 public class BookServiceImpl implements BookService {  

      HashSet<Book> bookList = new HashSet<Book>();  

      @Override  
      public HashSet<Book> findAllBook() {  
           if (bookList.isEmpty())  
                return null;  
           else  
                return bookList;  
      }  

      @Override  
      public Book findBookByID(long id) {  
           Book book = bookList.stream().filter(b -> b.getId() == id).findAny().orElse(null);  
           return book;  
      }  
     ....  


@Контроллер n @RestController

@Controller — это специализированный компонент, который в основном используется на веб-уровне. Обычно он используется в сочетании с аннотированными методами обработчика на основе аннотации RequestMapping. @RestController имеет аннотацию @Controller и используется для обработки запросов веб-уровня. Типы, несущие аннотацию @RestController, обрабатываются как контроллеры, в которых методы @RequestMapping по умолчанию предполагают семантику @ResponseBody.

 import java.util.HashSet;  

 import org.springframework.beans.factory.annotation.Autowired;  
 import org.springframework.web.bind.annotation.DeleteMapping;  
 import org.springframework.web.bind.annotation.GetMapping;  
 import org.springframework.web.bind.annotation.PathVariable;  
 import org.springframework.web.bind.annotation.PostMapping;  
 import org.springframework.web.bind.annotation.RequestBody;  
 import org.springframework.web.bind.annotation.RestController;  

 import xyz.sumithpuri.spring.boot.annotation.configuration.SBASampleConfigurationProperties;  
 import xyz.sumithpuri.spring.boot.annotation.model.Book;  
 import xyz.sumithpuri.spring.boot.annotation.service.BookServiceImpl;  

 /**  
  * @author Sumith Puri  
  *  
  */  
 @RestController  
 public class SBASampleController {  

      @Autowired  
      BookServiceImpl bookServiceImpl;  

      @Autowired  
      SBASampleConfigurationProperties sbasConfigProps;  


      @GetMapping("/findall")  
      public HashSet<Book> getAllBook() {  
           return bookServiceImpl.findAllBook();  
      }  

      @GetMapping("/findbyid/{id}")  
      public Book geBookById(@PathVariable long id) {  
           return bookServiceImpl.findBookByID(id);  
      }  
     ...  

**@Компонент

@Component используется для создания любого управляемого компонента Spring. Его можно использовать как Spring Bean. Любой bean-компонент с @Bean, созданный внутри компонента, будет иметь область действия «Prototype», в отличие от области действия bean-компонентов «Singleton», созданной в аннотированном классе @Configuration. @Repository и @Controller — специализированные компоненты

 package xyz.sumithpuri.spring.boot.annotation.component;  

 import javax.annotation.PostConstruct;  

 import org.springframework.beans.factory.annotation.Autowired;  
 import org.springframework.stereotype.Component;  

 import xyz.sumithpuri.spring.boot.annotation.service.SBASampleInterface;  

 /**  
  * @author sumith.puri  
  *  
  */  
 @Component  
 public class SpringBootAnnotationComponent {  


      @Autowired  
      private SBASampleInterface sbaSampleInterfaceImpl;  

      @PostConstruct  
      private void postConstruct() {  
           System.out.println("Testing @SpringBootApplication, @Component and @PostConstruct");  
      }  

 }  

@Repository n @Repository — это специализированный @Component, который используется для обозначения класса, обеспечивающего сохранение или хранение. Он будет предоставлять такие операции, как создание, обновление, извлечение, удаление и поиск. В основном он используется в сочетании с РСУБД или любой другой базой данных


[Spring — REST/Web/MVC]@RequestMapping

Эта аннотация из MVC/Web связывает заданный URI с методом в контроллере. Его можно использовать в следующем формате.

 @RequestMapping(method = RequestMethod.PATCH)  

n @GetMapping n Эта аннотация используется для сопоставления HTTP-запроса GET с определенным методом обработчика в контроллере. Это эквивалентно следующей альтернативе.

 @RequestMapping(method = RequestMethod.GET) 

@PostMapping n Эта аннотация используется для сопоставления HTTP-запроса POST с определенным методом обработчика в контроллере. Это эквивалентно следующей альтернативе.

 @RequestMapping(method = RequestMethod.POST) 

@DeleteMapping

Эта аннотация используется для сопоставления HTTP-запроса DELETE с определенным методом обработчика в контроллере. Это эквивалентно следующей альтернативе.

 @RequestMapping(method = RequestMethod.DELETE) 

@PutMapping

Эта аннотация используется для сопоставления HTTP-запроса PUT с определенным методом обработчика в контроллере. Это эквивалентно следующей альтернативе.

 @RequestMapping(method = RequestMethod.PUT) 

@PatchMapping

Эта аннотация используется для сопоставления запроса HTTP PATCH с определенным методом обработчика в контроллере. Это эквивалентно следующей альтернативе.

 @RequestMapping(method = RequestMethod.PATCH) 

@RequestBody

Эта аннотация используется для привязки параметра/объекта метода к параметрам входящего запроса.

@ResponseBody**

Это используется внутри контроллера и означает, что возвращенный объект будет автоматически сериализован и передан обратно в объект HttpResponse. Обратите внимание, что если вы используете @RestController, вам может не понадобиться использовать его, так как автоматически это комбинация @Controller и @ResponseBody.

n @RequestParam

Это используется для привязки параметра метода непосредственно к атрибуту запроса.

n @RequestHeader

Это используется для привязки параметра метода непосредственно к заголовку запроса.

n @RequestAttribute

Это можно использовать для привязки параметра метода к атрибуту запроса, который был добавлен из промежуточного уровня, такого как фильтр или перехватчик.

n @PathVariable n Используется для привязки параметра метода из URI шаблона запроса. Обратите внимание, что его можно использовать для привязки нескольких параметров метода.

 package xyz.sumithpuri.spring.boot.annotation.controller;  

 import java.util.HashSet;  

 import org.springframework.beans.factory.annotation.Autowired;  
 import org.springframework.web.bind.annotation.DeleteMapping;  
 import org.springframework.web.bind.annotation.GetMapping;  
 import org.springframework.web.bind.annotation.PathVariable;  
 import org.springframework.web.bind.annotation.PostMapping;  
 import org.springframework.web.bind.annotation.RequestBody;  
 import org.springframework.web.bind.annotation.RestController;  

 import xyz.sumithpuri.spring.boot.annotation.configuration.SBASampleConfigurationProperties;  
 import xyz.sumithpuri.spring.boot.annotation.model.Book;  
 import xyz.sumithpuri.spring.boot.annotation.service.BookServiceImpl;  

 /**  
  * @author Sumith Puri  
  *  
  */  
 @RestController  
 public class SBASampleController {  

      @Autowired  
      BookServiceImpl bookServiceImpl;  

      @Autowired  
      SBASampleConfigurationProperties sbasConfigProps;  

      @GetMapping("/findall")  
      public HashSet<Book> getAllBook() {  
           return bookServiceImpl.findAllBook();  
      }  

      @GetMapping("/findbyid/{id}")  
      public Book geBookById(@PathVariable long id) {  
           return bookServiceImpl.findBookByID(id);  
      }  

      @DeleteMapping("/delete")  
      public void deleteBook() {  
           bookServiceImpl.deleteAllData();  
      }  

      @PostMapping("/")  
      public void addBook(@RequestBody Book book) {  

           System.out.println("Testing Properties: " + sbasConfigProps.getName() + "; "   
                                                                  + sbasConfigProps.getMail() + "; "  
                                                                  + sbasConfigProps.getYear());  
           bookServiceImpl.addBook(book);  
      }  
 }  

Остерегайтесь следующей статьи из этой серии под названием «SKP’s SB #05: Spring Boot Annotation Reference-01/c». «Серия статей SKP SB» полностью основана на Spring Boot, а также на связанных темах, таких как Docker Desktop, таймеры Java, аннотации Spring и чистое завершение работы приложений Spring Boot.

:::информация Также опубликовано здесь.

:::


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE