CRUD с spring boot приложение с базой данных h2
я создал rest приложение с spring boot и база данных h2, приложение запускается без ошибок но на отправление запросов с postman отвечает только с http status 404, не понимаю
вот здесь вес pom файл:
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>3.0.4</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.example</groupId>
<artifactId>CRUDSpringWithH2</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>CRUDSpringWithH2</name>
<description>CRUDSpringWithH2</description>
<properties>
<java.version>17</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
</project>
здесь application.properties:
server.port=9090
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.show-sql=true
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.hibernate.ddl-auto=update
spring.h2.console.enabled=true
spring.h2.console.path=/h2
вот мой контроллер:
import com.example.crudspringwithh2.model.Book;
import com.example.crudspringwithh2.repo.BookRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
@RestController
public class BookController {
@Autowired
private BookRepo bookRepo;
@GetMapping("/getAllBooks")
public ResponseEntity<List<Book>> getAllBooks() {
try {
List<Book> bookList = new ArrayList<>(bookRepo.findAll());
if (bookList.isEmpty()) {
return new ResponseEntity<>(bookList, HttpStatus.NO_CONTENT);
}
return new ResponseEntity<>(bookList, HttpStatus.OK);
} catch (Exception e) {
return new ResponseEntity<>(HttpStatus.INTERNAL_SERVER_ERROR);
}
}
@GetMapping("/getBookById/{id}")
public ResponseEntity<Book> getBooksById(@PathVariable Long id) {
Optional<Book> bookData = bookRepo.findById(id);
if (bookData.isPresent()) {
return new ResponseEntity<>(bookData.get(), HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
@PostMapping("/addBook")
public ResponseEntity<Book> addBook(@RequestBody Book book) {
Book bookObj = bookRepo.save(book);
return new ResponseEntity<>(bookObj, HttpStatus.OK);
}
@PostMapping("/updateBookById{id}")
public ResponseEntity<Book> updateBookById(@PathVariable Long id, @RequestBody Book newBook) {
Optional<Book> oldBookData = bookRepo.findById(id);
if (oldBookData.isPresent()) {
Book updatedBookData = oldBookData.get();
updatedBookData.setTitle(newBook.getTitle());
updatedBookData.setAuthor(newBook.getAuthor());
Book bookObj = bookRepo.save(updatedBookData);
return new ResponseEntity<>(bookObj, HttpStatus.OK);
}
return new ResponseEntity<>(HttpStatus.NOT_FOUND);
}
@DeleteMapping("/deleteBookById{id}")
public ResponseEntity<Book> deleteBookById(@PathVariable Long id) {
bookRepo.deleteById(id);
return new ResponseEntity<>(HttpStatus.OK);
}
}



