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