Фреймворк Java SpringBoot

Java 常用类库Распространённые библиотеки Java


SpringBoot — это проект-расширение фреймворка Spring, нацеленный на упрощение начальной настройки и процесса разработки приложений Spring.

SpringBoot позволяет разработчикам быстро запускать приложения и работать с ними благодаря философии «соглашение важнее конфигурации».

Основные возможности SpringBoot

  1. Автоконфигурация: автоматически настраивает приложения Spring на основе jar-зависимостей, добавленных в проект.
  2. Автономность: встроенные серверы Tomcat, Jetty или Undertow, нет необходимости развёртывать WAR-файлы.
  3. Упрощённое управление зависимостями: упрощает конфигурацию Maven/Gradle с помощью starter-зависимостей.
  4. Готовность к production: предоставляет метрики, проверки работоспособности, вынесенную конфигурацию и другие возможности.
  5. Без генерации кода: не требуется XML-конфигурация.

Основные компоненты SpringBoot

1. SpringBoot Starter

SpringBoot Starter — это набор удобных дескрипторов зависимостей, позволяющих получить все необходимые технологии в одном месте. Например:

  • spring-boot-starter-web: используется для создания веб-приложений.
  • spring-boot-starter-data-jpa: используется для доступа к базе данных через JPA.
  • spring-boot-starter-test: используется для тестирования.

2. Автоконфигурация SpringBoot

SpringBoot автоматически настраивает приложение на основе jar-пакетов в classpath. Например, если база данных H2 находится в classpath, SpringBoot автоматически настроит базу данных в памяти.

3. SpringBoot Actuator

Предоставляет функции промышленного уровня для мониторинга и управления приложениями:

  • Проверки работоспособности приложения
  • Сбор метрик
  • Трассировка HTTP
  • Информация об окружении

Создайте свое первое приложение SpringBoot

1. Создайте проект с помощью Spring Initializr

Посетитеstart.spring.io, выберите:

  • Проект Maven
  • Язык Java
  • Последняя версия SpringBoot
  • Добавьте зависимость "Web"

2. Структура проекта

Типичная структура проекта SpringBoot:

src/
  main/
    java/
      com/example/demo/
        DemoApplication.java   # 主启动类
    resources/
      application.properties  # 配置文件
  test/
    java/
      com/example/demo/
        DemoApplicationTests.java # 测试类

3. Напишите простой REST-контроллер

Пример

@RestController
@RequestMapping("/api")
public class HelloController {

    @GetMapping("/hello")
    public String sayHello() {
        return "Hello, SpringBoot!";
    }
}

4. Запустите приложение

ЗапуститеDemoApplicationметод в классеmain, приложение запустится на порту по умолчанию 8080.

Посетитьhttp://localhost:8080/api/helloувидите возвращённое сообщение "Hello, SpringBoot!".


Конфигурация SpringBoot

1. Файлы конфигурации

SpringBoot поддерживает несколько способов конфигурации:

  • application.properties
  • application.yml
  • Переменные среды
  • Аргументы командной строки

Примерapplication.properties:

Пример

server.port=9090
spring.datasource.url=jdbc:mysql://localhost:3306/mydb
spring.datasource.username=root
spring.datasource.password=secret

2. Конфигурация для нескольких сред

Вы можете создавать разные файлы конфигурации для разных сред:

  • application-dev.properties: Среда разработки
  • application-prod.properties: Производственная среда

Укажите активную среду черезspring.profiles.active:

Пример

spring.profiles.active=dev

SpringBoot. Доступ к данным

1. Использование Spring Data JPA

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

Пример

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

Определите класс сущности:

Пример

@Сущность
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Long id;
    private String name;
    private String email;
    // геттеры и сеттеры
}

Создайте интерфейс репозитория:

Пример

public interface UserRepository extends JpaRepository<User, Long> {
    List<User> findByName(String name);
}

Использование в сервисном слое:

Пример

@Service
public class UserService {
    @Autowired
    private UserRepository userRepository;
   
    public List<User> getUsersByName(String name) {
        return userRepository.findByName(name);
    }
}

Лучшие практики SpringBoot

  1. Слоистая архитектура: Придерживайтесь слоистой архитектуры Controller-Service-Repository
  2. Обработка исключений: Используйте@ControllerAdviceглобальная обработка исключений
  3. Логирование: Используйте SLF4J для логирования
  4. Модульное тестирование: Пишите достаточно тестов для бизнес-логики
  5. Документация API: Интегрируйте Swagger для генерации документации API

Пример: Глобальная обработка исключений

Пример

@ControllerAdvice
public class GlobalExceptionHandler {
   
    @ExceptionHandler(ResourceNotFoundException.class)
    public ResponseEntity<ErrorResponse> handleResourceNotFound(ResourceNotFoundException ex) {
        ErrorResponse error = new ErrorResponse(
            "NOT_FOUND",
            ex.getMessage()
        );
        return new ResponseEntity<>(error, HttpStatus.NOT_FOUND);
    }
}

Продвинутые темы SpringBoot

  1. Spring Security: Аутентификация и авторизация
  2. Spring Cloud: Архитектура микросервисов
  3. Spring Batch: Пакетная обработка
  4. WebFlux: Реактивное программирование
  5. Интеграция с Docker: Развёртывание в контейнерах

SpringBoot значительно повышает эффективность разработки Java-приложений, упрощая конфигурацию и предоставляя готовые к использованию возможности. Это один из незаменимых фреймворков в современной Java-разработке.

Java 常用类库Распространённые библиотеки Java

Другие расширения