today's spring framework

Post on 06-May-2015

552 Views

Category:

Technology

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Today’s Spring frameworkBackbase Inspiration Lab

21 Nov 2013 Zoltan Altfatter

Agenda

Overview of Spring IO platform

Spring Boot

Spring Data

Hypermedia with Spring HATEOAS

CloudFoundry

Demo Application

Q&A

Pivotal Initiative

Spring (including Grails, RabbitMQ, Tomcat, Redis, GemFire)

Cloudfoundry (the open PaaS (Platform as a Service))

Greenplum (analytic data warehouse using Hadoop)

The Spring IO platform

Spring Bootinspired by Dropwizard

takes an opinionated view

convention-over-configuration

make you focus on the application

spring command line tool - run Groovy scripts

Embed Tomcat or Jetty directly

unlike Spring Roo, no code generation

no requirement for XML configuration

Spring Boot Grooy Demo

Spring DataUmbrella project for data access

subprojects: JPA, MongoDB, Redis, Neo4J, GemFire

Community managed subprojects: Elasticsearch, Solr, CouchDB, Riak

Common concept: Repository, following the repository design pattern

Repository, CrudRepository, PagingAndSortingRepository

Spring Data JPApublic interface RestaurantRepository extends CrudRepository<Restaurant, Long>, RestaurantRepositoryCustom { ! Restaurant findByName(String name); ! Page<Restaurant> findByAddressPostcode(String postcode, Pageable pageable); }

interface RestaurantRepositoryCustom { void removeRestaurantWithWebsite(Website website); }

class RestaurantRepositoryImpl implements RestaurantRepositoryCustom { @PersistenceContext private EntityManager em; ! @Override public void removeRestaurantWithWebsite(Website website) { TypedQuery<Restaurant> query = em.createQuery("from Restaurant where website like :website", Restaurant.class); query.setParameter("website", website); em.remove(query.getSingleResult()); } }

Hypermedia with Spring HateoasHATEOAS: Hypermedia As The Engine Of Application State

hyper-text driven REST web services

we are encoding metadata, or hypermedia, along with the repsonse

Resources discoverable through publication of links that point to the available resources

Spring Hateoas: provide an API to simplify the creation of hypermedia links and assembling the REST resource representation

Example hyper-text REST responsecurl -v -H "Accept: application/json" http://localhost:8080/resturants/1

< HTTP/1.1 200 OK < X-Application-Context: application < Content-Type: application/json < Transfer-Encoding: chunked < Server: Jetty(8.1.9.v20130131) < { "name" : "Cafe Olivier", "website" : { "value" : "http://www.cafeolivier.nl" }, "links" : [ { "rel" : "self", "href" : "http://localhost:8080/restaurants/1" }, { "rel" : "address", "href" : "http://localhost:8080/restaurants/1/address" }, { "rel" : "reviews", "href" : "http://localhost:8080/restaurants/1/reviews" } ] }

Spring in the cloud

The deployment targets for modern applications vary considerably

Java EE, Apache Tomcat/Jetty,

Cloud (AWS, Google App Engine, Heroku, OpenShift, CloudFoundry)

CloudFoundry - the open PaaS https://github.com/cloudfoundry

You can install it in your datacenter (cf-vagrant-installer using Chef, recommended way is BOSH)

https://run.pivotal.io

Demo application

Further tasks

Use SQL service (cleardb) provided by CloudFoundry

Store the model in MongoDB using Spring Data

Using profiles switch between datastores on CloudFoundry

Setup local CloudFoundry environment

Add security to REST endpoints

Social coordinates

https://github.com/altfatterz/reviews

https://github.com/altfatterz/spring-boot-groovy

twitter: @altfatterz

blog: altfatterz.blogspot.com

Thanks!

top related