 
                        
                    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.
:::информация Также опубликовано здесь.
:::
Оригинал
