Ответ
Spring Boot предоставляет аннотации для быстрой разработки. Вот ключевые из них, сгруппированные по назначению.
1. Запуск и конфигурация приложения
@SpringBootApplication– Мета-аннотация, объединяющая:@SpringBootConfiguration(вариант@Configuration)@EnableAutoConfiguration– включает автоматическую настройку Spring на основе classpath.@ComponentScan– сканирует пакеты на наличие компонентов (@Component,@Serviceи т.д.). Ставится на главный класс приложения.
2. Создание REST-контроллера
@RestController=@Controller+@ResponseBody. Указывает, что класс обрабатывает HTTP-запросы, а возвращаемые значения методов записываются прямо в тело HTTP-ответа (обычно как JSON).@RequestMapping,@GetMapping,@PostMapping,@PutMapping,@DeleteMapping,@PatchMapping– маппинг HTTP-запросов на методы контроллера.
3. Внедрение зависимостей и объявление бинов
@Autowired– автоматическое внедрение зависимости (через конструктор, поле или сеттер). Лучшая практика: использовать внедрение через конструктор (без аннотации над полем, если в классе один конструктор).@Component,@Service,@Repository,@Controller– стереотипные аннотации для объявления Spring-бинов.@Repositoryдополнительно транслирует исключения БД вDataAccessException.@Bean– объявляет бин в классе, помеченном@Configuration. Используется для настройки сторонних компонентов.
4. Работа с конфигурацией
@Value– инъекция значений изapplication.properties/application.ymlв поле.@ConfigurationProperties– привязка и валидация группы свойств к POJO-классу (предпочтительнее@Valueдля сложных конфигураций).@Profile– условная регистрация бина или конфигурации только при активном профиле (например,"dev","prod").
Пример REST-контроллера:
@RestController
@RequestMapping("/api/users")
public class UserController {
private final UserService userService; // Внедрение через конструктор
public UserController(UserService userService) {
this.userService = userService;
}
@GetMapping("/{id}")
public ResponseEntity<User> getUser(@PathVariable Long id) {
return ResponseEntity.ok(userService.findById(id));
}
@PostMapping
public ResponseEntity<User> createUser(@RequestBody UserDto userDto) {
User created = userService.create(userDto);
return ResponseEntity.created(URI.create("/api/users/" + created.getId())).body(created);
}
}