Step 7 - Adding a manually declared query method.

Introduced a method to lookup products by key and value using the @Query annotation.
Step 8 - Flexible predicate execution.

Added Querydsl as dependency as well as the appropriate setup of the APT processor and IDE integration. Let CustomerRepository extend QuerydslPredicateExecutor and use the API in the integration test to find customers.
Step 9 - Adding custom implementation method.