Tweaked the output folder for Querydsl type generation to avoid running into a bug in the Maven compiler plugin 3.5.1 [0]. Fixed an issue in a sample script used to demonstrate MongoDB script execution as the new JavaScript engine seems to be more strict. Switched to the MongoDB starter and excluded the legacy MongoDB Java driver from projects using Querydsl to consistently make use of the current driver only. [0] https://issues.apache.org/jira/browse/MCOMPILER-271
Spring Data REST - Starbucks example
This sample app exposes 10843 Starbucks coffee shops via a RESTful API that allows to access the stores in a hypermedia based way and exposes a resource to execute geo-location search for coffee shops.
Quickstart
- Install MongoDB (http://www.mongodb.org/downloads, unzip, run
mkdir data, runbin/mongod --dbpath=data) - Build and run the app (
mvn spring-boot:run) - Access the root resource (
curl http://localhost:8080/api) and traverse hyperlinks. - Or access the location search directly (e.g.
http://localhost:8080/api/stores/search/findByAddressLocationNear?location=40.740337,-73.995146&distance=0.5miles)
Web UI
The application provides a custom web UI using the exposed REST API to display the search result on a Google Map. Point you browser to http://localhost:8080. The UI is rendered using Thymeleaf, driven by the StoresController. A tiny JavaScript progressively enhances the view by picking up and enhancing a URI template rendered into the view (<div id="map" data-uri="…" />).
The API itself can be discovered using the HAL browser pulled in through the corresponding Spring Data REST module (spring-data-rest-hal-browser). It's exposed at the API root at http://localhost:8080/api.
Technologies used
- Spring Data REST & Spring Data MongoDB
- MongoDB
- Spring Batch (to read the CSV file containing the store data and pipe it into MongoDB)
- Spring Boot
