(Go: >> BACK << -|- >> HOME <<)

SlideShare a Scribd company logo
Josh Long (⻰龙之春)
@starbuxman
joshlong.com
josh@joshlong.com
slideshare.net/joshlong
github.com/joshlong
speakerdeck.com/joshlong

BUILDING REST SERVICES WITH

Spring
github.com/joshlong/the-spring-rest-stack
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

ABOUT ME

About Josh Long (⻰龙之春)
Spring Developer Advocate, Pivotal

Jean Claude
van Damme!

Java mascot Duke

@starbuxman
josh@joshlong.com
slideshare.net/joshlong
github.com/joshlong
speakerdeck.com/joshlong

some thing’s I’ve authored...
T H E S P R I N G R E S T S TA C K

Starting with Spring
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SPRING IO

XD

BOOT

GRAILS

Stream, Taps, Jobs

Bootable, Minimal, Ops-Ready

Full-stack, Web

INTEGRATION

BATCH

BIG DATA

WEB

Channels, Adapters,

Filters, Transformers

Jobs, Steps,

Readers, Writers

Ingestion, Export,

Orchestration, Hadoop

Controllers, REST,

WebSocket

DATA
RELATIONAL

NON-RELATIONAL

CORE
FRAMEWORK

SECURITY

GROOVY

REACTOR
A NEW HOME FOR SPRING

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
A NEW HOME FOR SPRING

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
SPRING 4

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

websockets : supports JSR 356, native APIs
!

Async RestTemplate 

based on NIO 2 HTTP client in JDK.

Java SE 8 and Java EE 7 extends support 

to emerging platforms
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SPRING 4

@Conditional provides the ability to conditionally 

create a bean
!
!

@Conditional (NasdaqIsUpCondition.class)

@Bean

Mongo extraMongoNode(){

!
!
!

// ...
}

And, best of all, @Conditional powers Spring Boot!
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SPRING BOOT

single point of focus, productionready, easy to customize
!

Installation:
> Java 1.6 or better
> Maven 3.0 or better
> optionally install spring CLI 

(or gvm or brew)
Demonstration
Take Spring Boot CLI for

a spin around the block

!
Demonstration
Take Spring Boot around the track.

!
T H E S P R I N G R E S T S TA C K

Testing
Demonstration
how to write unit tests with Spring
T H E S P R I N G R E S T S TA C K

Spring MVC
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

MODEL VIEW CONTROLLER

stop me if 

you’ve heard 

this one before ...

incoming
requests

delegate
request
DispatcherServlet

model
delegate
rendering of
response

return
response
model
return
control

render
response

view
template

controller
INSTALLING SPRING MVC

web.xml

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">
<distributable/>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
<param-name>contextInitializerClasses</param-name>
<param-value>my.ApplicationContextInitializer</param-value>
</context-param>
<context-param>
<param-name>contextClass</param-name>
<param-value>org.springframework.web.context.support.AnnotationConfigWebApplicationContext
</param-value>
</context-param>
<servlet>
<servlet-name>appServlet</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value></param-value>
</init-param>
`
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>appServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
</web-app>
INSTALLING SPRING MVC

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

WebApplicationInitializer ~= Java web.xml
!
public class SampleWebApplicationInitializer implements WebApplicationInitializer {
!
public void onStartup(ServletContext sc) throws ServletException {

AnnotationConfigWebApplicationContext ac = new AnnotationConfigWebApplicationContext();
ac.setServletContext(sc);
ac.scan( “a.package.full.of.services”, “a.package.full.of.controllers” );

!
sc.addServlet("spring", new DispatcherServlet(ac));
!

// register filters, other servlets, etc., to get Spring and Spring Boot working
}
}
INSTALLING SPRING MVC

or, just fill out the form...
public class SimplerDispatcherServletInitializer
extends AbstractAnnotationConfigDispatcherServletInitializer {

!
!
!
}

@Override
protected Class<?>[] getRootConfigClasses() {
return new Class<?>[]{ ServiceConfiguration.class };
}
@Override
protected Class<?>[] getServletConfigClasses() {
return new Class<?>[]{ WebMvcConfiguration.class };
}
@Override
protected String[] getServletMappings() {
return new String[]{"/*"};
}

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
INSTALLING SPRING MVC

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

or, just use Spring Boot and never worry about it
@ComponentScan
@EnableAutoConfiguration
public class Application extends SpringBootServletInitializer {

!
private static Class< Application> applicationClass = Application.class;
!
!
}

!

public static void main(String[] args) {
SpringApplication.run(applicationClass);
}

@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
return application.sources(applicationClass);
}
A RICH SERVLET TOOLKIT

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

other niceties Spring’s web support provides:
HttpRequestHandlers supports remoting technologies : Caucho, HTTP Invoker, etc.
DelegatingFilterProxy javax.filter.Filter that delegates to a Spring-managed bean
HandlerInterceptor wraps requests to HttpRequestHandlers
ServletWrappingController lets you force requests to a servlet through the Spring Handler chain
WebApplicationContextUtils look up the current ApplicationContext given a ServletContext
HiddenHttpMethodFilter routes HTTP requests to the appropriate endpoint
T H E S P R I N G R E S T S TA C K

REST Essentials
MOTIVATIONS FOR REST

meanwhile, in the enterprise,
somebody is using SOAP
because it’s “SIMPLE”

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
WHAT IS REST?

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

REST is an architectural constraint based on HTTP 1.1,
and created as part of Roy Fielding’s doctoral
dissertation in 2000.



It embraces HTTP.


It’s a style, not a standard
http://en.wikipedia.org/wiki/Representational_state_transfer

WHAT IS REST?

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

REST has no hard and fast rules.
REST is an architectural style, not a standard.
REST uses Headers to describe requests & responses
REST embraces HTTP verbs. (DRY)
HTTP VERBS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

GET requests retrieve information.
GET can have side-effects (but it’s unexpected)
GET can be conditional, or partial: 

If-Modified-Since, Range

!
GET /users/21
HTTP VERBS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

DELETE requests that a resource be removed, though
the deletion doesn’t have to be immediate.

DELETE /users/21
HTTP VERBS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

POST requests that the resource do something with the
enclosed entity
POST can be used to create or update. 

!

POST /users
{ “firstName”: “Juergen” }
HTTP VERBS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

PUT requests that the entity be stored at a URI
PUT can be used to create or update.

PUT /users/21
{ “firstName”: “Juergen” }
STATUS CODES

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

status codes convey the result of the server’s attempt to
satisfy the request. 



Categories:
1xx: informational

2xx: success

3xx: redirection

4xx: client error 

5xx: server error 

STATUS CODES

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

200 OK - Everything worked

!

201 Created - Returns a Location header for new resource

!

202 Accepted - server has accepted the request, but it is not yet
complete. Status URI optionally conveyed in Location header
STATUS CODES

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

400 Bad Request - Malformed Syntax. Retry with change.

!

401 Unauthorized - authentication is required 

403 Forbidden - server has understood, but refuses request



404 Not Found - server can’t find a resource for URI


406 Incompatible - incompatible Accept headers specified

409 Conflict - resource conflicts with client request
CONTENT NEGOTIATION

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Clients and services must agree on a representation media type
through content negotiation.

!

Client specifies what it wants through Accept header


Server specifies what it produces through Content-Type header

!
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

CONTENT NEGOTIATION

If no match is made,
the client will receive a

406 Not Acceptable
CONTENT NEGOTIATION

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Spring MVC supports multiple types of content negotiation through its
ContentNegotiationStrategy:
e.g., Accept header, URL extension, request parameters, or a fixed type

SOME REST POWER TOOLS

Advanced
REST
Client

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
SOME REST POWER TOOLS

Poster

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
SOME REST POWER TOOLS

curl

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

➜ ~ curl -X POST -u android-crm:123456 http://localhost:8080/oauth/token 

-H "Accept: application/json"  

-d "password=......"

!
{"access_token":"426481ea-c3eb-45a0-8b2d-d1f9cfae0fcc","token_type":"bearer","expires
!
➜ ~
T H E S P R I N G R E S T S TA C K

Towards
Hypermedia
THE MATURITY MODEL

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

The Richardson Maturity Model is a way to grade your
API according to the REST constraints with 4 levels of
increasing compliance
!

http://martinfowler.com/articles/richardsonMaturityModel.html
THE MATURITY MODEL

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

The Richardson Maturity Model 



Level 0: swamp of POX

Uses HTTP mainly as a tunnel through one URI

e.g., SOAP, XML-RPC




Usually features on HTTP verb (POST)


http://martinfowler.com/articles/richardsonMaturityModel.html
THE MATURITY MODEL

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

The Richardson Maturity Model 



Level 1: resources

Multiple URIs to distinguish related nouns 

e.g., /articles/1, /articles/2, vs. just /articles




http://martinfowler.com/articles/richardsonMaturityModel.html
THE MATURITY MODEL

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

The Richardson Maturity Model 



Level 2: HTTP verbs

leverage transport-native properties to enhance service 

e.g., HTTP GET and PUT and DELETE and POST




Uses idiomatic HTTP controls like status codes, headers 


http://martinfowler.com/articles/richardsonMaturityModel.html
Demonstration
Our first @RestController
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

HATEOAS

The Richardson Maturity Model 



Level 3: Hypermedia Controls (aka, HATEOAS)

No a priori knowledge of service required

Navigation options are provided by service and hypermedia controls




Promotes longevity through a uniform interface




http://martinfowler.com/articles/richardsonMaturityModel.html
HATEOAS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Links provide possible navigations from a given resource

!

Links are dynamic, based on resource state.

!

<link href=“http://...:8080/users/232/customers” 

rel= “customers”/>

!
{ href: “http://...:8080/users/232/customers”,
rel: “customers” }
Demonstration
Working with Hypermedia and 

Spring HATEOAS
SPRING DATA REST

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Spring Data REST simplifies the 

generic data-centric @Controllers

!
Builds on top of Spring Data Repository support:
@RestResource (path = "users", rel = "users")



public interface UserRepository extends PagingAndSortingRepository<User, Long> {

!
	
!

User findByUsername(@Param ("username") String username);
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SPRING DATA REST

Spring Data REST simplifies the 

generic data-centric @Controllers

!
Builds on top of Spring Data Repository support:
@RestResource (path = "users", rel = "users")



public interface UserRepository extends PagingAndSortingRepository<User, Long> {

!
	
!
!
!
	

User findByUsername(@Param ("username") String username);
select u from User where u.username = ?
SPRING DATA REST

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Spring Data REST simplifies the 

generic data-centric @Controllers

!
Builds on top of Spring Data Repository support:
@RestResource (path = "users", rel = "users")



public interface UserRepository extends PagingAndSortingRepository<User, Long> {

!
	

}

List<User> findUsersByFirstNameOrLastNameOrUsername(

@Param ("firstName") String firstName, 

@Param ("lastName") String lastName, 

@Param ("username") String username);
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SPRING DATA REST

Spring Data REST simplifies the 

generic data-centric @Controllers

!
Builds on top of Spring Data Repository support:
@RestResource (path = "users", rel = "users")



public interface UserRepository extends PagingAndSortingRepository<User, Long> {

!
	

}

List<User> findUsersByFirstNameOrLastNameOrUsername(

@Param ("firstName") String firstName, 

@Param ("lastName") String lastName, 

@Param ("username") String username);

select u from User u
where u.username = ?
or u.firstName = ?
or u.lastName = ?
T H E S P R I N G R E S T S TA C K

Testing REST
Demonstration
Testing web services with 

Spring MVC Test framework
T H E S P R I N G R E S T S TA C K

Error Handling
HANDLING ERRORS IN A REST API

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Developers learn to use an API through errors
Extreme programming and Test-Driven development
embrace this truth
!

Errors introduce transparency
STATUS CODES

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Status codes map to errors
pick a meaningful subset of the
70+ status codes
200 - OK 

201 - Created

304 - Created - Not Modified

400 - Bad Request 

401 - Unauthorized

403 - Forbidden

404 - Not Found

500 - Internal Server Error


https://blog.apigee.com/detail/restful_api_design_what_about_errors
DESCRIPTIVE ERRORS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Send meaningful errors along with status codes
{
   "message": "authentication failed",
   "errors": [
     {
       "resource": "Issue",
       "field": "title",
       "code": "missing_field"
     }
   ]
 }

{
   "type": "authentication",
   "message": “the username and
password provided are invalid” ,
   "status": “401”
}

https://blog.apigee.com/detail/restful_api_design_what_about_errors
DESCRIPTIVE ERRORS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

application/vnd.error+json & application/vnd.error+xml
{
"logref": 42,
"message": "Validation failed",
"_links": {
"help": {
"href": "http://.../", "title": "Error Information"
},
"describes": {
"href": "http://.../", "title": "Error Description"
}
}
}

https://github.com/blongden/vnd.error
Demonstration
Handling errors with vnd.errors and
@ControllerAdvice
Demonstration
Using @ControllerAdvice
T H E S P R I N G R E S T S TA C K

API Versioning
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

VERSIONING YOUR API

Build a version into your API
!

API versions can be dealt with one of two ways:
through API URIs:

https://api.foo.com/v1

through media types:

application/vnd.company.urapp-v3+json
T H E S P R I N G R E S T S TA C K

Security
SPRING SECURITY

Security is hard. Don’t reinvent
the wheel!

!

Things to worry about when developing
web applications? EVERYTHING

!

(cross-site scripting, session fixation, identification,
authorization, and authentication, encryption, and SO
much more.)

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SPRING SECURITY

Spring Security is a modern security
framework for a modern age

!

Yes
client submits
authentication
credentials

Authentication
Mechanism
collects the details

No - retry!

Authentication is
valid?

Store Authentication in
SecurityContextHolder

process original request
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SPRING SECURITY

Spring Security is a modern security
framework for a modern age

!

Yes
client submits
authentication
credentials

Authentication
Mechanism
collects the details
Authentication

Store Authentication in
SecurityContextHolder

Authentication is
valid?

Mechanism collects the details!

!
No AuthenticationRequest is sent to AuthenticationManager!
- retry!
!
(passes it through a chain of AuthenticationProviders)!
!
AuthenticationProvider asks a UserDetailsService for a UserDetails!
!
The UserDetails object is used to build an Authentication object!
!
!

process original request
Demonstration
adding a Spring Security sign in form to a
regular application

!
!
SECURING REST SERVICES

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Usernames and Passwords

!
If you can trust the client to keep a secret like a password, then it
can send the password using:





...HTTP Basic - passwords are sent plaintext!
... HTTP Digest - hashed passwords, but still plaintext.
SSL/TLS encryption helps prevent man-in-the-middle attacks
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SSL AND TLS

So, SSL/TLS is...?

!

so trust!
wow

an implementation of public key
cryptography:

!
public key cryptography only works because we
!
all agree to trust well known root CAs
!
SSL AND TLS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SSL/TLS is used routinely to verify the identify of servers.

!

Normally, the client confirms the server, but the server rarely requires the
client to transmit a certificate.

!

It’s easy enough to setup SSL/TLS on your web server.

!
Demonstration
Setting up SSL/TLS with embedded Apache
Tomcat 7 and Spring Boot

!
!
SSL AND TLS

SSL/TLS can be used to
identify the client to the server,
through mutual authentication.

!
!

browser/client must send their
certificate, as well.

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

@Override
protected void configure(HttpSecurity http)
throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.x509();
}
@Configuration
@EnableWebMvcSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {

!

!

}

@Autowired
public void configureGlobal(AuthenticationManagerBuilder auth)
throws Exception {
auth.
inMemoryAuthentication()
.withUser("mia").password("password").roles("USER").and()
.withUser("mario").password("password").roles("USER","ADMIN");
}
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.x509();
}
Demonstration
X509 Java configuration demo

!
!
THE TROUBLE WITH PASSWORDS

Tim Bray says: Passwords don’t scale

!
Too easy to compromise.

!
Updating all your clients whenever you change
your password would be a nightmare!

!

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
THE TROUBLE WITH PASSWORDS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
X-AUTH

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Most people just want their own clients to be able to talk
securely to their own services.

!
x-auth offers one way of achieving this based on tokens

!
!
Demonstration
A custom x-auth example
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

OAUTH

OAuth is a way for one (automated) process to securely
identify itself to another

!

Assumes a user context:

!
!

“I authorize $CLIENTX to act on $USER_Y’s behalf”

OAuth is a way of authorizing a client with particular access (scopes)

!
OAUTH

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
OAUTH

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
OAUTH

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
Demonstration
Spring Security OAuth in the oauth module
Demonstration
Writing a unit test for an OAuth service using
the Spring MVC test framework
T H E S P R I N G R E S T S TA C K

The Connected
Web of APIs
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

A CONNECTED WORLD IN 60 SECONDS

* source: visual.ly/60-seconds-social-media

A Connected World in 00:60 seconds

700ksent
messages

1090
visitors

2000
checkins

175k
tweets

7610
searches

2MM
videos viewed

3125
photos uploaded

7630sent
messages
SPRING SOCIAL

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Spring Social provides an authentication and 

authorization client for OAuth (1.0, 1.0a, 2.0)

!
Provides type-safe API bindings for various services
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

SPRING SOCIAL BINDINGS
BINDINGS...

•

Body Level One
Body Level Two
Body Level Three
Body Level Four
Body Level Five
SPRING SOCIAL BINDINGS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
Demonstration
Using Spring Social in an Application
Demonstration
Building Your own Spring Social binding
T H E S P R I N G R E S T S TA C K

Deployment
GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

MICRO SERVICE ARCHITECTURE

Micro Services ...

!

Promote single responsibility principle

!

*

Promote loosely coupled, focused services.

!

(SOLID at the architecture level)

Don’t like it? Throw it away!

*

In object-oriented programming, the single responsibility principle states that every class
should have a single responsibility, and that responsibility should be entirely encapsulated by the
class. All its services should be narrowly aligned with that responsibility.!

http://en.wikipedia.org/wiki/Single_responsibility_principle
EMBEDDED WEB SERVERS

Spring Boot supports Apache Tomcat 7 by default.

!

Easy to switch to Jetty, or Tomcat 8

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
Demonstration
Switching embedded web servers
TRADITIONAL/CLASSIC SERVERS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
Demonstration
From fat .jar to .war
SPRING WITH SPRING
REST DESIGNWORKS WELL IN THE CLOUD
CLOUD

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK
Demonstration
To the cloud!
PRODUCTION READY REST

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Spring Boot is production-ready, by default

!

Comes out of the box with smart monitoring and management tools, the
CrashD server, etc.

!
!
!
Demonstration
production ready REST services with Boot
NEXT STEPS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Spring IO Guides
http://spring.io/guides

!

Roy Fielding’s Dissertation introduces REST
http://www.ics.uci.edu/~fielding/pubs/dissertation/evaluation.htm#sec_6_1%7C

!

The Spring REST Shell
http://github.com/jbrisbin/rest-shell

!

Spring Security, Security OAuth, Spring Data REST, HATEOAS, Social
http://github.com/spring-projects

!

Spring MVC Test Framework
http://docs.spring.io/spring/docs/4.0.x/spring-framework-reference/html/testing.html

!
NEXT STEPS

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

Oliver Gierke’s talk on Hypermedia from Øredev 

@ http://vimeo.com/53214577


Lez Hazelwood’s talk on designing a beautiful JSON+REST API



Ben Hale’s talk on REST API design with Spring from SpringOne2GX 2012 

@ http://www.youtube.com/watch?v=wylViAqNiRA


My links:
github.com/joshlong/the-spring-rest-stack
slideshare.net/joshlong/rest-apis-with-spring
@starbuxman

!
REST DESIGN WITH SPRING

GITHUB.COM/JOSHLONG/THE-SPRING-REST-STACK

@starbuxman
josh@joshlong.com
slideshare.net/joshlong
github.com/joshlong
speakerdeck.com/joshlong

github.com/joshlong/the-spring-rest-stack

More Related Content

What's hot

Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
Jeevesh Pandey
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
Jonathan Holloway
 
Spring boot
Spring bootSpring boot
Spring boot
sdeeg
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
Rasheed Waraich
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
Naphachara Rattanawilai
 
Spring boot
Spring bootSpring boot
Spring boot
Pradeep Shanmugam
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
Dzmitry Naskou
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
Josué Neis
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
Harshit Choudhary
 
Spring Boot
Spring BootSpring Boot
Spring Boot
Pei-Tang Huang
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
Serhat Can
 
Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring BootBuilding a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring Boot
Omri Spector
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
Knoldus Inc.
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
Dzmitry Naskou
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
Kasun Madusanke
 
Xke spring boot
Xke spring bootXke spring boot
Xke spring boot
sourabh aggarwal
 
Spring User Guide
Spring User GuideSpring User Guide
Spring User Guide
Muthuselvam RS
 
JPA and Hibernate
JPA and HibernateJPA and Hibernate
JPA and Hibernate
elliando dias
 
Spring boot
Spring bootSpring boot
Spring boot
Bhagwat Kumar
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
Jakub Kubrynski
 

What's hot (20)

Spring data jpa
Spring data jpaSpring data jpa
Spring data jpa
 
Spring boot - an introduction
Spring boot - an introductionSpring boot - an introduction
Spring boot - an introduction
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring boot introduction
Spring boot introductionSpring boot introduction
Spring boot introduction
 
Spring Boot Tutorial
Spring Boot TutorialSpring Boot Tutorial
Spring Boot Tutorial
 
Spring boot
Spring bootSpring boot
Spring boot
 
Spring Framework - AOP
Spring Framework - AOPSpring Framework - AOP
Spring Framework - AOP
 
PUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBootPUC SE Day 2019 - SpringBoot
PUC SE Day 2019 - SpringBoot
 
Spring mvc
Spring mvcSpring mvc
Spring mvc
 
Spring Boot
Spring BootSpring Boot
Spring Boot
 
Introduction to Spring Framework
Introduction to Spring FrameworkIntroduction to Spring Framework
Introduction to Spring Framework
 
Building a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring BootBuilding a REST Service in minutes with Spring Boot
Building a REST Service in minutes with Spring Boot
 
Spring Data JPA
Spring Data JPASpring Data JPA
Spring Data JPA
 
Spring Framework - Core
Spring Framework - CoreSpring Framework - Core
Spring Framework - Core
 
Java Server Pages
Java Server PagesJava Server Pages
Java Server Pages
 
Xke spring boot
Xke spring bootXke spring boot
Xke spring boot
 
Spring User Guide
Spring User GuideSpring User Guide
Spring User Guide
 
JPA and Hibernate
JPA and HibernateJPA and Hibernate
JPA and Hibernate
 
Spring boot
Spring bootSpring boot
Spring boot
 
Introduction to Spring Boot!
Introduction to Spring Boot!Introduction to Spring Boot!
Introduction to Spring Boot!
 

Viewers also liked

Microservices with Spring Boot
Microservices with Spring BootMicroservices with Spring Boot
Microservices with Spring Boot
Joshua Long
 
RESTful Web Services with Spring MVC
RESTful Web Services with Spring MVCRESTful Web Services with Spring MVC
RESTful Web Services with Spring MVC
digitalsonic
 
Economies of Scaling Software
Economies of Scaling SoftwareEconomies of Scaling Software
Economies of Scaling Software
Joshua Long
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
IndicThreads
 
Bootiful Code with Spring Boot
Bootiful Code with Spring BootBootiful Code with Spring Boot
Bootiful Code with Spring Boot
Joshua Long
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
Stormpath
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. REST
Sam Brannen
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
Halil Burak Cetinkaya
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
Christopher Bartling
 
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with SpringJava Configuration Deep Dive with Spring
Java Configuration Deep Dive with Spring
Joshua Long
 
Boot It Up
Boot It UpBoot It Up
Boot It Up
Joshua Long
 
Teach a Dog to REST
Teach a Dog to RESTTeach a Dog to REST
Teach a Dog to REST
Brian Mulloy
 
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Sam Brannen
 
Spring MVC Basics
Spring MVC BasicsSpring MVC Basics
Spring MVC Basics
Bozhidar Bozhanov
 
RESTful API Design, Second Edition
RESTful API Design, Second EditionRESTful API Design, Second Edition
RESTful API Design, Second Edition
Apigee | Google Cloud
 
ReST (Representational State Transfer) Explained
ReST (Representational State Transfer) ExplainedReST (Representational State Transfer) Explained
ReST (Representational State Transfer) Explained
Dhananjay Nene
 
JSON and REST
JSON and RESTJSON and REST
JSON and REST
Robert MacLean
 
WebSockets with Spring 4
WebSockets with Spring 4WebSockets with Spring 4
WebSockets with Spring 4
Sergi Almar i Graupera
 
Rest with Spring
Rest with SpringRest with Spring
Rest with Spring
Eugen Paraschiv
 
Multi Client Development with Spring for SpringOne 2GX 2013 with Roy Clarkson
Multi Client Development with Spring for SpringOne 2GX 2013 with Roy ClarksonMulti Client Development with Spring for SpringOne 2GX 2013 with Roy Clarkson
Multi Client Development with Spring for SpringOne 2GX 2013 with Roy Clarkson
Joshua Long
 

Viewers also liked (20)

Microservices with Spring Boot
Microservices with Spring BootMicroservices with Spring Boot
Microservices with Spring Boot
 
RESTful Web Services with Spring MVC
RESTful Web Services with Spring MVCRESTful Web Services with Spring MVC
RESTful Web Services with Spring MVC
 
Economies of Scaling Software
Economies of Scaling SoftwareEconomies of Scaling Software
Economies of Scaling Software
 
Building RESTful applications using Spring MVC
Building RESTful applications using Spring MVCBuilding RESTful applications using Spring MVC
Building RESTful applications using Spring MVC
 
Bootiful Code with Spring Boot
Bootiful Code with Spring BootBootiful Code with Spring Boot
Bootiful Code with Spring Boot
 
Design Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIsDesign Beautiful REST + JSON APIs
Design Beautiful REST + JSON APIs
 
Spring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. RESTSpring Web Services: SOAP vs. REST
Spring Web Services: SOAP vs. REST
 
REST & RESTful Web Services
REST & RESTful Web ServicesREST & RESTful Web Services
REST & RESTful Web Services
 
RESTful Web Services
RESTful Web ServicesRESTful Web Services
RESTful Web Services
 
Java Configuration Deep Dive with Spring
Java Configuration Deep Dive with SpringJava Configuration Deep Dive with Spring
Java Configuration Deep Dive with Spring
 
Boot It Up
Boot It UpBoot It Up
Boot It Up
 
Teach a Dog to REST
Teach a Dog to RESTTeach a Dog to REST
Teach a Dog to REST
 
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
Spring Framework 4.0 - The Next Generation - Soft-Shake 2013
 
Spring MVC Basics
Spring MVC BasicsSpring MVC Basics
Spring MVC Basics
 
RESTful API Design, Second Edition
RESTful API Design, Second EditionRESTful API Design, Second Edition
RESTful API Design, Second Edition
 
ReST (Representational State Transfer) Explained
ReST (Representational State Transfer) ExplainedReST (Representational State Transfer) Explained
ReST (Representational State Transfer) Explained
 
JSON and REST
JSON and RESTJSON and REST
JSON and REST
 
WebSockets with Spring 4
WebSockets with Spring 4WebSockets with Spring 4
WebSockets with Spring 4
 
Rest with Spring
Rest with SpringRest with Spring
Rest with Spring
 
Multi Client Development with Spring for SpringOne 2GX 2013 with Roy Clarkson
Multi Client Development with Spring for SpringOne 2GX 2013 with Roy ClarksonMulti Client Development with Spring for SpringOne 2GX 2013 with Roy Clarkson
Multi Client Development with Spring for SpringOne 2GX 2013 with Roy Clarkson
 

Similar to REST APIs with Spring

Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回
haruki ueno
 
Spring5 New Features
Spring5 New FeaturesSpring5 New Features
Spring5 New Features
Jay Lee
 
Socket applications
Socket applicationsSocket applications
Socket applications
João Moura
 
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 -  Fullstack end-to-end Test Automation with node.jsForwardJS 2017 -  Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
Mek Srunyu Stittri
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
Yevgeniy Brikman
 
Full Stack Scala
Full Stack ScalaFull Stack Scala
Full Stack Scala
Ramnivas Laddad
 
Spring Performance Gains
Spring Performance GainsSpring Performance Gains
Spring Performance Gains
VMware Tanzu
 
Java Libraries You Can’t Afford to Miss
Java Libraries You Can’t Afford to Miss Java Libraries You Can’t Afford to Miss
Java Libraries You Can’t Afford to Miss
Andres Almiray
 
Java 8: the good parts!
Java 8: the good parts!Java 8: the good parts!
Java 8: the good parts!
Andrzej Grzesik
 
JavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good PartsJavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good Parts
Konrad Malawski
 
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastHow Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
Atlassian
 
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey BuzdinMarvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Java User Group Latvia
 
Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App Engine
Andy McKay
 
Nodejs meetup-12-2-2015
Nodejs meetup-12-2-2015Nodejs meetup-12-2-2015
Nodejs meetup-12-2-2015
Fergus McDowall
 
JCD 2013 OCM Java Developer
JCD 2013 OCM Java DeveloperJCD 2013 OCM Java Developer
JCD 2013 OCM Java Developer
益裕 張
 
OCM Java 開發人員認證與設計模式
OCM Java 開發人員認證與設計模式OCM Java 開發人員認證與設計模式
OCM Java 開發人員認證與設計模式
CodeData
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptx
SUFYAN SATTAR
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
Matt Raible
 
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group PresentationActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
ipolevoy
 
Os Johnson
Os JohnsonOs Johnson
Os Johnson
oscon2007
 

Similar to REST APIs with Spring (20)

Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回Spring boot入門ハンズオン第二回
Spring boot入門ハンズオン第二回
 
Spring5 New Features
Spring5 New FeaturesSpring5 New Features
Spring5 New Features
 
Socket applications
Socket applicationsSocket applications
Socket applications
 
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 -  Fullstack end-to-end Test Automation with node.jsForwardJS 2017 -  Fullstack end-to-end Test Automation with node.js
ForwardJS 2017 - Fullstack end-to-end Test Automation with node.js
 
Play Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and ScalaPlay Framework: async I/O with Java and Scala
Play Framework: async I/O with Java and Scala
 
Full Stack Scala
Full Stack ScalaFull Stack Scala
Full Stack Scala
 
Spring Performance Gains
Spring Performance GainsSpring Performance Gains
Spring Performance Gains
 
Java Libraries You Can’t Afford to Miss
Java Libraries You Can’t Afford to Miss Java Libraries You Can’t Afford to Miss
Java Libraries You Can’t Afford to Miss
 
Java 8: the good parts!
Java 8: the good parts!Java 8: the good parts!
Java 8: the good parts!
 
JavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good PartsJavaOne 2013: Java 8 - The Good Parts
JavaOne 2013: Java 8 - The Good Parts
 
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fastHow Bitbucket Pipelines Loads Connect UI Assets Super-fast
How Bitbucket Pipelines Loads Connect UI Assets Super-fast
 
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey BuzdinMarvel of Annotation Preprocessing in Java by Alexey Buzdin
Marvel of Annotation Preprocessing in Java by Alexey Buzdin
 
Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App Engine
 
Nodejs meetup-12-2-2015
Nodejs meetup-12-2-2015Nodejs meetup-12-2-2015
Nodejs meetup-12-2-2015
 
JCD 2013 OCM Java Developer
JCD 2013 OCM Java DeveloperJCD 2013 OCM Java Developer
JCD 2013 OCM Java Developer
 
OCM Java 開發人員認證與設計模式
OCM Java 開發人員認證與設計模式OCM Java 開發人員認證與設計模式
OCM Java 開發人員認證與設計模式
 
SpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptxSpringBootCompleteBootcamp.pptx
SpringBootCompleteBootcamp.pptx
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 
ActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group PresentationActiveWeb: Chicago Java User Group Presentation
ActiveWeb: Chicago Java User Group Presentation
 
Os Johnson
Os JohnsonOs Johnson
Os Johnson
 

More from Joshua Long

Have You Seen Spring Lately?
Have You Seen Spring Lately?Have You Seen Spring Lately?
Have You Seen Spring Lately?
Joshua Long
 
the Spring Update from JavaOne 2013
the Spring Update from JavaOne 2013the Spring Update from JavaOne 2013
the Spring Update from JavaOne 2013
Joshua Long
 
the Spring 4 update
the Spring 4 updatethe Spring 4 update
the Spring 4 update
Joshua Long
 
Extending spring
Extending springExtending spring
Extending spring
Joshua Long
 
The spring 32 update final
The spring 32 update finalThe spring 32 update final
The spring 32 update final
Joshua Long
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
Joshua Long
 
Integration and Batch Processing on Cloud Foundry
Integration and Batch Processing on Cloud FoundryIntegration and Batch Processing on Cloud Foundry
Integration and Batch Processing on Cloud Foundry
Joshua Long
 
using Spring and MongoDB on Cloud Foundry
using Spring and MongoDB on Cloud Foundryusing Spring and MongoDB on Cloud Foundry
using Spring and MongoDB on Cloud Foundry
Joshua Long
 
Spring in-the-cloud
Spring in-the-cloudSpring in-the-cloud
Spring in-the-cloud
Joshua Long
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
Joshua Long
 
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - EuropeThe Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
Joshua Long
 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom
Joshua Long
 
Multi client Development with Spring
Multi client Development with SpringMulti client Development with Spring
Multi client Development with Spring
Joshua Long
 
Spring Batch Behind the Scenes
Spring Batch Behind the ScenesSpring Batch Behind the Scenes
Spring Batch Behind the Scenes
Joshua Long
 
Cloud Foundry Bootcamp
Cloud Foundry BootcampCloud Foundry Bootcamp
Cloud Foundry Bootcamp
Joshua Long
 
Spring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud FoundrySpring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud Foundry
Joshua Long
 
Spring and Cloud Foundry; a Marriage Made in Heaven
Spring and Cloud Foundry; a Marriage Made in HeavenSpring and Cloud Foundry; a Marriage Made in Heaven
Spring and Cloud Foundry; a Marriage Made in Heaven
Joshua Long
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
Joshua Long
 
Extending Spring for Custom Usage
Extending Spring for Custom UsageExtending Spring for Custom Usage
Extending Spring for Custom Usage
Joshua Long
 
Using Spring's IOC Model
Using Spring's IOC ModelUsing Spring's IOC Model
Using Spring's IOC Model
Joshua Long
 

More from Joshua Long (20)

Have You Seen Spring Lately?
Have You Seen Spring Lately?Have You Seen Spring Lately?
Have You Seen Spring Lately?
 
the Spring Update from JavaOne 2013
the Spring Update from JavaOne 2013the Spring Update from JavaOne 2013
the Spring Update from JavaOne 2013
 
the Spring 4 update
the Spring 4 updatethe Spring 4 update
the Spring 4 update
 
Extending spring
Extending springExtending spring
Extending spring
 
The spring 32 update final
The spring 32 update finalThe spring 32 update final
The spring 32 update final
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
Integration and Batch Processing on Cloud Foundry
Integration and Batch Processing on Cloud FoundryIntegration and Batch Processing on Cloud Foundry
Integration and Batch Processing on Cloud Foundry
 
using Spring and MongoDB on Cloud Foundry
using Spring and MongoDB on Cloud Foundryusing Spring and MongoDB on Cloud Foundry
using Spring and MongoDB on Cloud Foundry
 
Spring in-the-cloud
Spring in-the-cloudSpring in-the-cloud
Spring in-the-cloud
 
Multi Client Development with Spring
Multi Client Development with SpringMulti Client Development with Spring
Multi Client Development with Spring
 
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - EuropeThe Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
The Cloud Foundry bootcamp talk from SpringOne On The Road - Europe
 
A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom A Walking Tour of (almost) all of Springdom
A Walking Tour of (almost) all of Springdom
 
Multi client Development with Spring
Multi client Development with SpringMulti client Development with Spring
Multi client Development with Spring
 
Spring Batch Behind the Scenes
Spring Batch Behind the ScenesSpring Batch Behind the Scenes
Spring Batch Behind the Scenes
 
Cloud Foundry Bootcamp
Cloud Foundry BootcampCloud Foundry Bootcamp
Cloud Foundry Bootcamp
 
Spring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud FoundrySpring in the Cloud - using Spring with Cloud Foundry
Spring in the Cloud - using Spring with Cloud Foundry
 
Spring and Cloud Foundry; a Marriage Made in Heaven
Spring and Cloud Foundry; a Marriage Made in HeavenSpring and Cloud Foundry; a Marriage Made in Heaven
Spring and Cloud Foundry; a Marriage Made in Heaven
 
Spring 3.1: a Walking Tour
Spring 3.1: a Walking TourSpring 3.1: a Walking Tour
Spring 3.1: a Walking Tour
 
Extending Spring for Custom Usage
Extending Spring for Custom UsageExtending Spring for Custom Usage
Extending Spring for Custom Usage
 
Using Spring's IOC Model
Using Spring's IOC ModelUsing Spring's IOC Model
Using Spring's IOC Model
 

Recently uploaded

Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...
BookNet Canada
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
Safe Software
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Erasmo Purificato
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
SynapseIndia
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
ishalveerrandhawa1
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
shanthidl1
 
一比一原版(msvu毕业证书)圣文森山大学毕业证如何办理
一比一原版(msvu毕业证书)圣文森山大学毕业证如何办理一比一原版(msvu毕业证书)圣文森山大学毕业证如何办理
一比一原版(msvu毕业证书)圣文森山大学毕业证如何办理
uuuot
 
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design ApproachesKnowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Earley Information Science
 
5G bootcamp Sep 2020 (NPI initiative).pptx
5G bootcamp Sep 2020 (NPI initiative).pptx5G bootcamp Sep 2020 (NPI initiative).pptx
5G bootcamp Sep 2020 (NPI initiative).pptx
SATYENDRA100
 
GDG Cloud Southlake #34: Neatsun Ziv: Automating Appsec
GDG Cloud Southlake #34: Neatsun Ziv: Automating AppsecGDG Cloud Southlake #34: Neatsun Ziv: Automating Appsec
GDG Cloud Southlake #34: Neatsun Ziv: Automating Appsec
James Anderson
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
Larry Smarr
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
Vijayananda Mohire
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
UiPathCommunity
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
Larry Smarr
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
jackson110191
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
Mark Billinghurst
 
HTTP Adaptive Streaming – Quo Vadis (2024)
HTTP Adaptive Streaming – Quo Vadis (2024)HTTP Adaptive Streaming – Quo Vadis (2024)
HTTP Adaptive Streaming – Quo Vadis (2024)
Alpen-Adria-Universität
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
Stephanie Beckett
 
MYIR Product Brochure - A Global Provider of Embedded SOMs & Solutions
MYIR Product Brochure - A Global Provider of Embedded SOMs & SolutionsMYIR Product Brochure - A Global Provider of Embedded SOMs & Solutions
MYIR Product Brochure - A Global Provider of Embedded SOMs & Solutions
Linda Zhang
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
Eric D. Schabell
 

Recently uploaded (20)

Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...Transcript: Details of description part II: Describing images in practice - T...
Transcript: Details of description part II: Describing images in practice - T...
 
Coordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar SlidesCoordinate Systems in FME 101 - Webinar Slides
Coordinate Systems in FME 101 - Webinar Slides
 
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
Paradigm Shifts in User Modeling: A Journey from Historical Foundations to Em...
 
How RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptxHow RPA Help in the Transportation and Logistics Industry.pptx
How RPA Help in the Transportation and Logistics Industry.pptx
 
Calgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptxCalgary MuleSoft Meetup APM and IDP .pptx
Calgary MuleSoft Meetup APM and IDP .pptx
 
Cookies program to display the information though cookie creation
Cookies program to display the information though cookie creationCookies program to display the information though cookie creation
Cookies program to display the information though cookie creation
 
一比一原版(msvu毕业证书)圣文森山大学毕业证如何办理
一比一原版(msvu毕业证书)圣文森山大学毕业证如何办理一比一原版(msvu毕业证书)圣文森山大学毕业证如何办理
一比一原版(msvu毕业证书)圣文森山大学毕业证如何办理
 
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design ApproachesKnowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
Knowledge and Prompt Engineering Part 2 Focus on Prompt Design Approaches
 
5G bootcamp Sep 2020 (NPI initiative).pptx
5G bootcamp Sep 2020 (NPI initiative).pptx5G bootcamp Sep 2020 (NPI initiative).pptx
5G bootcamp Sep 2020 (NPI initiative).pptx
 
GDG Cloud Southlake #34: Neatsun Ziv: Automating Appsec
GDG Cloud Southlake #34: Neatsun Ziv: Automating AppsecGDG Cloud Southlake #34: Neatsun Ziv: Automating Appsec
GDG Cloud Southlake #34: Neatsun Ziv: Automating Appsec
 
The Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU CampusesThe Increasing Use of the National Research Platform by the CSU Campuses
The Increasing Use of the National Research Platform by the CSU Campuses
 
Quantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLMQuantum Communications Q&A with Gemini LLM
Quantum Communications Q&A with Gemini LLM
 
UiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs ConferenceUiPath Community Day Kraków: Devs4Devs Conference
UiPath Community Day Kraków: Devs4Devs Conference
 
The Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive ComputingThe Rise of Supernetwork Data Intensive Computing
The Rise of Supernetwork Data Intensive Computing
 
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdfINDIAN AIR FORCE FIGHTER PLANES LIST.pdf
INDIAN AIR FORCE FIGHTER PLANES LIST.pdf
 
Research Directions for Cross Reality Interfaces
Research Directions for Cross Reality InterfacesResearch Directions for Cross Reality Interfaces
Research Directions for Cross Reality Interfaces
 
HTTP Adaptive Streaming – Quo Vadis (2024)
HTTP Adaptive Streaming – Quo Vadis (2024)HTTP Adaptive Streaming – Quo Vadis (2024)
HTTP Adaptive Streaming – Quo Vadis (2024)
 
What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024What’s New in Teams Calling, Meetings and Devices May 2024
What’s New in Teams Calling, Meetings and Devices May 2024
 
MYIR Product Brochure - A Global Provider of Embedded SOMs & Solutions
MYIR Product Brochure - A Global Provider of Embedded SOMs & SolutionsMYIR Product Brochure - A Global Provider of Embedded SOMs & Solutions
MYIR Product Brochure - A Global Provider of Embedded SOMs & Solutions
 
Observability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetryObservability For You and Me with OpenTelemetry
Observability For You and Me with OpenTelemetry
 

REST APIs with Spring