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: secret5. 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=prod9. Logging
По умолчанию Spring Boot использует Logback.
📄 В application.properties:
`logging.level.root=INFO
logging.level.com.example=DEBUG
logging.file.name=app.log10. Best Practices
- ✅ Стартуй проект через Spring Initializr
- ✅ Используй application.yml (читабельнее, чем properties).
- ✅ Разделяй настройки на dev/test/prod.
- ✅ Добавляй Actuator для мониторинга.
- ✅ Используй @RestControllerAdvice для централизованной обработки ошибок.
📌 Итог по Spring Boot
- @SpringBootApplication = точка входа
- starters = наборы зависимостей
- application.yml = конфиг
- Actuator = мониторинг
- REST-контроллеры = просто и быстро
- профили = гибкая конфигурация