RU | EN | DE

1. Что такое Spring Boot

  • Spring = огромный фреймворк, нужно настраивать вручную (XML/Java config).
  • Spring Boot = “Spring с батарейками”:
    • автоматическая конфигурация,
    • встроенный Tomcat (или Jetty/Undertow),
    • система starters (зависимости-наборы),
    • готовая структура проекта,
    • мониторинг (Actuator).

⚡ Тебе достаточно написать минимальный код → и уже работает.

2. Минимальное приложение

@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}
  • @SpringBootApplication = объединяет три аннотации:
    • @Configuration (Java Config),
    • @EnableAutoConfiguration (автоконфигурация),
    • @ComponentScan (сканирование пакетов).

3. Starters (зависимости)

Spring Boot starters = заранее собранные наборы зависимостей.

📄 Примеры (в pom.xml):

//...
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-security</artifactId>
</dependency>
//...

📌 Популярные стартеры:

  • spring-boot-starter-web → REST, MVC, JSON
  • spring-boot-starter-data-jpa → Hibernate + JPA
  • spring-boot-starter-security → Spring Security
  • spring-boot-starter-thymeleaf → HTML-шаблоны
  • spring-boot-starter-test → JUnit, Mockito

4. Конфигурация (application.properties, application.yml)

📄 src/main/resources/application.properties

server.port=8081
spring.datasource.url=jdbc:postgresql://localhost:5432/demo
spring.datasource.username=demo
spring.datasource.password=secret

📄 application.yml (удобнее для вложенных структур)

server:
  port: 8081
spring:
  datasource:
    url: jdbc:postgresql://localhost:5432/demo
    username: demo
    password: secret

5. Actuator (мониторинг и health-check)

📄 Добавляем зависимость:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

📄 Настройки:

management.endpoints.web.exposure.include=health,info,metrics

📌 Доступные эндпоинты:

  • /actuator/health → состояние
  • /actuator/info → информация
  • /actuator/metrics → метрики
  • /actuator/env → окружение

6. REST API (Spring Boot + MVC)

@RestController
@RequestMapping("/api/users")
class UserController {
    @GetMapping
    public List<String> getUsers() {
        return List.of("Alice", "Bob");
    }
 
	@PostMapping
    public String createUser(@RequestBody String name) {
        return "Created user: " + name;
    }
}

📌 Аннотации:

  • @RestController = @Controller + @ResponseBody
  • @GetMapping, @PostMapping, @PutMapping, @DeleteMapping
  • @PathVariable, @RequestParam, @RequestBody

7. Обработка ошибок

@RestControllerAdvice
class GlobalExceptionHandler {
    @ExceptionHandler(IllegalArgumentException.class)
    public ResponseEntity<String> handle(IllegalArgumentException ex) {
        return ResponseEntity.badRequest().body("Error: " + ex.getMessage());
    }
}

8. Profiles (dev, test, prod)

📄 application-dev.properties

server.port=8081

📄 application-prod.properties

server.port=80

Запуск с профилем:

mvn spring-boot:run -Dspring-boot.run.profiles=prod

9. Logging

По умолчанию Spring Boot использует Logback.

📄 В application.properties:

`logging.level.root=INFO
logging.level.com.example=DEBUG
logging.file.name=app.log

10. Best Practices

  • ✅ Стартуй проект через Spring Initializr
  • ✅ Используй application.yml (читабельнее, чем properties).
  • ✅ Разделяй настройки на dev/test/prod.
  • ✅ Добавляй Actuator для мониторинга.
  • ✅ Используй @RestControllerAdvice для централизованной обработки ошибок.

📌 Итог по Spring Boot

  • @SpringBootApplication = точка входа
  • starters = наборы зависимостей
  • application.yml = конфиг
  • Actuator = мониторинг
  • REST-контроллеры = просто и быстро
  • профили = гибкая конфигурация