title: Interface is just skeleton in Java then how does CrudRepository provides all CRUD operations?
body: <p>I understand that interface in Java will have only skeleton or signature of methods. In below example interface does not have any method defined, but still the operations are being executed without any issue. Can anyone explain how does it work?</p>
  
  <p>AlbumRepository interface extends from another one. It also should be having skeleton only no method definitions.</p>
  
  <pre><code>import org.cloudfoundry.samples.music.domain.Album;
  import org.springframework.data.repository.CrudRepository;
  
  @Repository
  public interface AlbumRepository extends CrudRepository&lt;Album, String&gt; {
  }
  </code></pre>
  
  <p>AlbumController , here the .save or .findall works perfectly. How does it work since the original interface methods are not defined anywhere.</p>
  
  <pre><code>public class AlbumController {
  
      private AlbumRepository repository;
  
      @Autowired
      public AlbumController(AlbumRepository repository) {
          this.repository = repository;
      }
      @ResponseBody
      @RequestMapping(method = RequestMethod.GET)
      public Iterable&lt;Album&gt; albums() {
          return repository.findAll();
      }
  
      @ResponseBody
      @RequestMapping(method = RequestMethod.PUT)
      public Album add(@RequestBody @Valid Album album) {
          logger.info("Adding album " + album.getId());
          return repository.save(album);
      }
  }
  </code></pre>
  
  <p>I am new to Java hibernate and trying to understand how does it work. Sorry if I am missing anything...</p>