2. Agenda
Overview of Spring IO platform
Spring Boot
Spring Data
Hypermedia with Spring HATEOAS
CloudFoundry
Demo Application
Q&A
3. Pivotal Initiative
Spring (including Grails, RabbitMQ, Tomcat,
Redis, GemFire)
Cloudfoundry (the open PaaS (Platform as a
Service))
Greenplum (analytic data warehouse using
Hadoop)
5. Spring Boot
inspired 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
7. Spring Data
Umbrella 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
8. Spring Data JPA
public 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());
}
}
9. Hypermedia with Spring Hateoas
HATEOAS: 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
11. 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-vagrantinstaller using Chef, recommended way is BOSH)
https:/
/run.pivotal.io
13. 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