Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST

703 views

Published on

Spring Data REST oferece uma customização no topo do projeto Spring Data que exporta os repositórios automaticamente como serviços REST. Implementa conceitos e boas práticas em arquiteturas REST, como RESTful, ALPS, HATEOAS, permitindo os clientes encontrarem e explorarem as funcionalidades expostas de uma maneira fácil e organizada.
Esta palestra irá abordar como desenvolver rapidamente uma API de microservicos REST utilizando Spring Boot e Spring Data REST. Será principalmente orientada a exemplos de código demonstrando a implementação destas tecnologias.

Published in: Technology
  • Be the first to comment

JavaOne LATAM 2016 - RESTful Services Simplificado com Spring Data REST

  1. 1. RESTful services simplificado com Spring Data REST Rodrigo Cândido da Silva @rcandidosilva
  2. 2. About Me • Software Architect • http://integritastech.com • JUG Leader do GUJavaSC • http://gujavasc.org • Twitter • @rcandidosilva • Contatos • http://rodrigocandido.me
  3. 3. Agenda • Spring Data • Arquitetura REST • RESTful Services • HATEOAS • HAL • Spring Data REST • Demo
  4. 4. Spring Data
  5. 5. Spring Data
  6. 6. Spring Data
  7. 7. Spring Data @Entity class Person { @Id @GeneratedValue( strategy=GenerationType.AUTO ) private BigInteger id; private String firstname, lastname; @Column( name=„email“) private String emailAddress; @OneToMany private Set<Person> colleagues; } JPA Entity
  8. 8. Spring Data JPA Repository public interface PersonRepository extends Repository<Person, BigInteger> { // Finder for a single entity Person findByEmailAddress(String emailAddress); // Finder for multiple entities List<Person> findByLastnameLike(String lastname); // Finder with pagination Page<Person> findByFirstnameLike(String firstname, Pageable page); // Geospatial queries List<Person> findByLocationNear(Point location, Distance distance); GeoResults<Person> findByLocationNear(Point location); }
  9. 9. Spring Data MongoDB Document @Document class Person { @Id private BigInteger id; @Indexed private String firstname, lastname; @Field( „email“) private String emailAddress; @DBRef private Set<Person> colleagues; public Person(String firstname) { … } @PersistenceConstructor public Person(String firstname, String lastname) { … } … }
  10. 10. Spring Data MongoDB Template // Setup infrastructure Mongo mongo = new Mongo(); MongoDbFactory factory = new SimpleMongoDbFactory(mongo, “foo“ ); MongoTemplate template = new MongoTemplate(factory); // Create and save entity Person dave = new Person( “Dave“ , “Matthews“ ); dave.setEmailAddress( “dave@dmband.com“ ); template.save(person); // Query entity Query query = new Query( new Criteria( “emailAddress“ ) .is( “dave@dmband.com“ )); assertThat(template.find(query), is(dave));
  11. 11. Web Service API’s
  12. 12. Arquitetura REST
  13. 13. Arquitetura REST • ︎Protocolo cliente/servidor sem estado (HTTP) • ︎Operações bem definidas • GET • POST • PUT • DELETE, etc • ︎Sintaxe universal para identificação de recursos (URL) • ︎Transferência de informações em formato padrão (XML, HTML, JSON)
  14. 14. Richardson Maturity Model
  15. 15. RESTful Services
  16. 16. HATEOAS • Hypermedia As The Engine of Application State • Descrevem o estado atual da aplicação e como navegar para o próximo estado
  17. 17. HAL "Convenção para definição de REST hypermedia"
  18. 18. Spring Data REST
  19. 19. Spring Data REST • Padrões comuns para Spring Data Repositories • Incrementa o suporte hypermedia • HAL, ALPS, JSON Schema, URI templates, etc • Suporta • JPA, GemFire, Neo4j, MongoDB • Demais estão por vir…
  20. 20. Spring Data REST
  21. 21. Spring Data REST $ curl “http://localhost:8080/persons/1”
  22. 22. HAL Browser
  23. 23. Demo • Spring Data REST • https://github.com/rcandidosilva/spring-data-rest-sample
  24. 24. Conclusões… • REST é uma necessidade das aplicações web atuais • Spring Data oferece uma ótima infra-estrutura para implementação de lógica de persistência • Spring Data REST agiliza a implementação de endpoints REST • CRUD + REST == Spring Data REST • Enjoy it ;)
  25. 25. Perguntas ?
  26. 26. Muito obrigado! @rcandidosilva rodrigocandido.me

×