Первым шагом является создание проекта. Самый простой способ — использовать Spring Initializr (start.spring.io). Выберите Maven или Gradle, язык Java, укажите версию Spring Boot (рекомендуется последняя стабильная) и добавьте необходимые зависимости. Для нашего примера выберем: ‘Spring Web’, ‘Spring Data JPA’ и ‘H2 Database’. Нажмите ‘Generate’ и скачайте архив.
Распакуйте проект и откройте его в вашей IDE. Обратите внимание на основной класс приложения, аннотированный `@SpringBootApplication`. Эта аннотация объединяет `@Configuration`, `@EnableAutoConfiguration` и `@ComponentScan`.
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
Теперь создадим простую сущность (Entity). Предположим, мы делаем API для управления книгами. Создадим класс `Book` в пакете `model`.
package com.example.demo.model;
import javax.persistence.*;
@Entity
public class Book {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String title;
private String author;
// Конструкторы, геттеры и сеттеры
public Book() {}
public Book(String title, String author) {
this.title = title;
this.author = author;
}
// Геттеры и сеттеры (опущены для краткости)
}
Далее создадим репозиторий (Repository) — интерфейс для работы с данными. Spring Data JPA сделает за нас всю тяжелую работу.
package com.example.demo.repository;
import com.example.demo.model.Book;
import org.springframework.data.jpa.repository.JpaRepository;
public interface BookRepository extends JpaRepository {
}
Теперь создадим слой сервиса (Service). Это необязательно для простого CRUD, но демонстрирует лучшие практики.
package com.example.demo.service;
import com.example.demo.model.Book;
import com.example.demo.repository.BookRepository;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class BookService {
@Autowired
private BookRepository bookRepository;
public List findAll() {
return bookRepository.findAll();
}
public Book save(Book book) {
return bookRepository.save(book);
}
public Book findById(Long id) {
return bookRepository.findById(id).orElse(null);
}
public void deleteById(Long id) {
bookRepository.deleteById(id);
}
}
Наконец, создадим REST-контроллер (Controller), который будет обрабатывать HTTP-запросы.
package com.example.demo.controller;
import com.example.demo.model.Book;
import com.example.demo.service.BookService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
@RestController
@RequestMapping("/api/books")
public class BookController {
@Autowired
private BookService bookService;
@GetMapping
public List getAllBooks() {
return bookService.findAll();
}
@PostMapping
public Book createBook(@RequestBody Book book) {
return bookService.save(book);
}
@GetMapping("/{id}")
public Book getBookById(@PathVariable Long id) {
return bookService.findById(id);
}
@DeleteMapping("/{id}")
public void deleteBook(@PathVariable Long id) {
bookService.deleteById(id);
}
}
Вот и все! Spring Boot благодаря автоконфигурации автоматически настроит H2 (в памяти) базу данных, подключит Hibernate в качестве JPA-провайдера и запустит встроенный Tomcat на порту 8080. Вы можете запустить приложение, выполнив метод `main` в `DemoApplication`.
Для проверки работы API используйте curl или Postman:
- GET `http://localhost:8080/api/books` — получить список книг (пока пустой).
- POST `http://localhost:8080/api/books` с телом JSON `{"title": "Spring Boot in Action", "author": "Craig Walls"}` — создать новую книгу.
- Повторный GET запрос покажет созданную книгу.
Комментарии (12)