2016-01-04 11 views
1

我知道Java中的接口只有方法的骨架或簽名。在下面的例子中,接口沒有定義任何方法,但仍然正在執行操作,沒有任何問題。任何人都可以解釋它是如何工作的?接口只是Java中的框架,那麼CrudRepository如何提供所有的CRUD操作?

AlbumRepository接口從另一個擴展。它也應該有骨架只有沒有方法的定義。

import org.cloudfoundry.samples.music.domain.Album; 
import org.springframework.data.repository.CrudRepository; 

@Repository 
public interface AlbumRepository extends CrudRepository<Album, String> { 
} 

AlbumController,這裏的.save或.findall完美地工作。由於原始接口方法沒有在任何地方定義,它是如何工作的。

public class AlbumController { 

    private AlbumRepository repository; 

    @Autowired 
    public AlbumController(AlbumRepository repository) { 
     this.repository = repository; 
    } 
    @ResponseBody 
    @RequestMapping(method = RequestMethod.GET) 
    public Iterable<Album> 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); 
    } 
} 

我是Java新手,想了解它是如何工作的。對不起,如果我失去了什麼...

回答

3

歡迎來到Spring Data的魔力。

你是對的,接口自己不做任何事情。但是,在這裏Spring Data JPA會在您運行應用程序時爲您自動創建該接口的實現。

+0

感謝您的快速響應。你有沒有參考? – Shamseer

+1

@Shamseer你可以去:http://docs.spring.io/spring-data/jpa/docs/current/reference/html/ – Adam

+0

,謝謝你這麼多... – Shamseer

相關問題