- The very first thing that we will need to do is add a new dependency to build.gradle with the spring-boot-starter-web starter to get us all the necessary libraries for web-based functionality. The following code snippet is what it will look like:
dependencies {
compile("org.springframework.boot:spring-boot-starter-data-jpa")
compile("org.springframework.boot:spring-boot-starter-jdbc")
compile("org.springframework.boot:spring-boot-starter-web")
runtime("com.h2database:h2")
runtime("mysql:mysql-connector-java")
testCompile("org.springframework.boot:spring-boot-starter-test")
}
- Next, we will need to create a Spring controller that will be used to handle the web requests for the catalog data in our application. Let's start by creating a new package structure to house our controllers so that we have our code nicely grouped by its appropriate purposes. Create a package folder called controllers in the src/main/java/com/example/bookpub directory from the root of our project.
- As we will be exposing the book data, let's create the controller class file called BookController in our newly created package with the following content:
@RestController
@RequestMapping("/books")
public class BookController {
@Autowired
private BookRepository bookRepository;
@RequestMapping(value = "", method = RequestMethod.GET)
public Iterable<Book> getAllBooks() {
return bookRepository.findAll();
}
@RequestMapping(value = "/{isbn}", method =
RequestMethod.GET)
public Book getBook(@PathVariable String isbn) {
return bookRepository.findBookByIsbn(isbn);
}
}
- Start the application by running ./gradlew clean bootRun.
- After the application has started, open the browser and go to http://localhost:8080/books and you should see a response: [].