./mvnw spring-boot:run → Open http://localhost:8080/api/hello application.properties (or YAML) # Server server.port=9090 server.servlet.context-path=/myapp Logging logging.level.org.springframework=INFO Data source (real DB later) spring.datasource.url=jdbc:mysql://localhost:3306/mydb spring.datasource.username=root spring.datasource.password=secret
public interface BookRepository extends JpaRepository<Book, Long> List<Book> findByAuthor(String author);
management.endpoints.web.exposure.include=health,info,metrics Build a fat JAR: Spring Boot In Action
@Service @RequiredArgsConstructor public class BookService private final BookRepository bookRepo; public Book saveBook(Book book) return bookRepo.save(book);
@Entity @Data @NoArgsConstructor public class Book @Id @GeneratedValue private Long id; private String title; private String author; public Book saveBook(Book book) return bookRepo.save(book)
Add dependency:
@Test void shouldCreateBook() throws Exception mockMvc.perform(post("/api/books") .contentType(MediaType.APPLICATION_JSON) .content("\"title\":\"Spring Boot in Action\",\"author\":\"Craig Walls\"")) .andExpect(status().isOk()); private String title
java -jar target/myapp-0.0.1-SNAPSHOT.jar
@SpringBootTest @AutoConfigureMockMvc class BookControllerTest @Autowired private MockMvc mockMvc;
./mvnw package