Jeroen Sterken
@jeroensterken
@spring_io
#springio17
•
•
@jeroensterken
@spring_io
#springio17
•
•
–
–
–
@spring_io
#springio17
•
Related projects
Spring LDAP
Spring Security OAuth
Spring Security Grails
Spring Security SAML
Spring Security Kerberos
Modules (#20)
spring-aop
spring-aspects
spring-beans
spring-context
spring-context-support
spring-core
spring-expression
spring-instrument
spring-instrument-tomcat
spring-jdbc
spring-jms
spring-messaging
spring-orm
spring-oxm
spring-test
spring-tx
spring-web
spring-webmvc
spring-webmvc-portlet
spring-websocket
Umbrella project
Spring Cloud Config
Spring Cloud Zookeeper
Spring Cloud Netflix
Spring Cloud Bus
Spring Cloud for CF
Spring CF Service Broker
Spring Cloud for AWS
Spring Cloud Cluster
Spring Cloud Consul
Spring Cloud Security
Spring Cloud Sleuth
Spring Cloud Data Flow
Spring Cloud Stream
Spring Cloud Stream App Starters
Spring Cloud Task
Spring Cloud Task App Starters
Spring Cloud connectors
Spring Cloud Starters
Spring Cloud CLI
Spring Cloud Contract
@spring_io
#springio17
–
•
•
•
–
Spring Cloud Config Spring Cloud Cluster Spring Cloud Stream Spring Cloud for Amazon Web
Services
Spring Cloud Netflix Spring Cloud Consul Spring Cloud Stream App
Starters
Spring Cloud connectors
Spring Cloud Bus Spring Cloud Security Spring Cloud Task Spring Cloud Starters
Spring Cloud for Cloud Foundry Spring Cloud Sleuth Spring Cloud Task App
Starters
Spring Cloud CLI
Spring Cloud Cloud Foundry
Service Broker
Spring Cloud Data Flow Spring Cloud Zookeeper Spring Cloud Contract
+ spring boot
@spring_io
#springio17
Spring security
IO platform
Spring Integration
Spring web services
Spring LDAP
Spring web flow
Spring batch
@spring_io
#springio17
•
•
<dependencyManagement>
<dependencies>
<dependency>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>Brussels-SR2</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
</dependency>
<parent>
<groupId>io.spring.platform</groupId>
<artifactId>platform-bom</artifactId>
<version>Brussels-SR2</version>
<relativePath/>
</parent>
https://maven2repo.com/io.spring.platform/platform-build
@spring_io
#springio17
•
•
•
•
–
–
–
–
–
@spring_io
#springio17
•
•
•
@spring_io
#springio17
•
@Configuration
@EnableIntegration
public class MyConfiguration {
@Bean
public IntegrationFlow myFlow() {
return IntegrationFlows.from(this.integerMessageSource(), c ->
c.poller(Pollers.fixedRate(100)))
.channel(this.inputChannel())
.filter((Integer p) -> p > 0)
.transform(Object::toString)
.channel(MessageChannels.queue())
.get();
}
}
@spring_io
#springio17
Spring web services
Spring LDAP
Spring web flow
Spring batch
@spring_io
#springio17
Spring Cloud
Spring DataSpring Boot
Spring REST docs Spring Cloud Data Flow
Spring Social
Spring Hateoas
Spring Session
@spring_io
#springio17
@spring_io
#springio17
Spring Boot
Spring Data
Data
web
Spring REST docs
Spring Hateoas
Spring Session
Integration
Spring Social
Cloud
Spring Cloud
@spring_io
#springio17
@spring_io
#springio17
•
–
–
–
@spring_io
#springio17
•
–
–
•
–
–
@spring_io
#springio17
•
–
•
Spring Data Redis
Spring Data for Apache Cassandra
Spring Data for Apache Solr
Spring Data Couchbase (community module)
Spring Data Elasticsearch (community module)
Spring Data Neo4j (community module)
Spring Data Commons
Spring Data JPA
Spring Data KeyValue
Spring Data LDAP
Spring Data MongoDB
Spring Data Gemfire
Spring Data REST
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-releasetrain</artifactId>
<version>Kay-M3</version>
<type>pom</type>
<scope>import</scope>
</dependency>
@spring_io
#springio17
•
–
–
public interface CrudRepository<T, ID
extends Serializable> extends Repository<T, ID> {
public <S extends T> save(S entity);
public <S extends T> Iterable<S> save(Iterable<S> entities);
public T findOne(ID id);
public Iterable<T> findAll();
public void delete(ID id);
public void delete(T entity);
public void deleteAll();
}
@spring_io
#springio17
•
–
–
•
Spring data
Repositories/aggregates
Spring HATEOAS
hypermedia+ Spring data REST=
“DDD & REST - Domain Driven APIs for the web” - Oliver Gierke
@spring_io
#springio17
•
–
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private long id;
private String firstName;
private String lastName;
...
@RepositoryRestResource(collectionResourceRel = "people", path = "people")
public interface PersonRepository extends PagingAndSortingRepository<Person, Long> {
List<Person> findByLastName(@Param("name") String name);
}
@spring_io
#springio17
•
$ curl http://localhost:8080
{
"_links" : {
"people" : {
"href" : "http://localhost:8080/people{?page,size,sort}",
"templated" : true
}
}
}
$ curl http://localhost:8080/people
{
"_links" : {
"self" : {
"href" : "http://localhost:8080/people{?page,size,sort}",
"templated" : true
},
"search" : {
"href" : "http://localhost:8080/people/search"
}
},
"page" : {
"size" : 20,
"totalElements" : 0,
"totalPages" : 0,
"number" : 0
}
}
@spring_io
#springio17
•
–
–
•
–
–
–
–
@spring_io
#springio17
•
–
–
•
–
@spring_io
#springio17
Spring Hateoas Spring REST docs Spring Social
@spring_io
#springio17
Cloud
Spring Cloud
Spring Cloud data flow
Spring XD
@spring_io
#springio17
•
–
•
–
–
@spring_io
#springio17
•
–
•
Spring Cloud Data Flow
Spring Cloud Stream
Spring Cloud Stream App Starters
Spring Cloud Task
Spring Cloud Task App Starters
Spring Cloud for AWS
Spring Cloud for Cloud Foundry
Spring Cloud connectors
Spring Cloud Cloud Foundry Service Broker
Spring Cloud CLI
Spring Cloud Contract
Spring Cloud Starters
Spring Cloud Config
Spring Cloud Netflix
Spring Cloud Zookeeper
Spring Cloud Bus
Spring Cloud Cluster
Spring Cloud Consul
Spring Cloud Security
Spring Cloud Sleuth
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
microservices
data
PaaS
@spring_io
#springio17
API
Gateway
LOG
Analytics
Monitor
AUTH
service
CONFIG
service
Service
Discovery
Client
ZUUL EUREKA
Spring Cloud
Config
Spring Cloud
Security
Spring Cloud
Netflix
Spring Cloud
Netflix
HYSTERIX
Spring Cloud
Zookeeper
Spring Cloud Starters
Spring Cloud Config
Spring Cloud Netflix
Spring Cloud Zookeeper
Spring Cloud Bus
Spring Cloud Cluster
Spring Cloud Consul
Spring Cloud Security
Spring Cloud Sleuth
@spring_io
#springio17
Spring Cloud Zookeeper Spring Cloud Netflix Spring Cloud Consul
Service Discovery
Support for
Ribbon & Zuul
Distributed Configuration
Eureka: service discovery
Zuul: intelligent routing
(service discovery)
Ribbon (client side load
balancing)
Hystrix: circuit breaker
Service Discovery
Distributed configuration
@spring_io
#springio17
•
–
–
•
CONFIG
service
Spring Cloud
Config
@spring_io
#springio17
•
–
•
–
–
–
@spring_io
#springio17
•
–
•
•
–
–
@spring_io
#springio17
Spring Cloud Data Flow
Spring Cloud Stream
Spring Cloud Stream App Starters
Spring Cloud for AWS
Spring Cloud for Cloud Foundry
Spring Cloud connectors
Spring Cloud Cloud Foundry Service Broker
Spring Cloud CLI
Spring Cloud Contract
Spring Cloud Task
Spring Cloud Task App Starters
Spring Cloud Starters
Spring Cloud Config
Spring Cloud Netflix
Spring Cloud Zookeeper
Spring Cloud Bus
Spring Cloud Cluster
Spring Cloud Consul
Spring Cloud Security
Spring Cloud Sleuth
microservices
data
PaaS
@spring_io
#springio17
Source
Proces
sing
step
Proces
sing
step
monolith
Source
Processing
step
Processing
step
Processing
step
Integration
Springboot
app
Springboot
app
Springboot
app
Springboot
app
Springboot
app
Proces
sing
step
Destination
Destination
Spring Cloud Data Flow
Spring Cloud Stream
Spring Cloud Stream App Starters
Spring Cloud Task
Spring Cloud Task App Starters
@spring_io
#springio17
•
–
•
–
–
•
–
•
@spring_io
#springio17
•
–
•
–
–
–
–
@spring_io
#springio17
•
–
–
–
–
–
–
@spring_io
#springio17
•
–
–
–
•
–
–
@spring_io
#springio17
Spring Cloud Data Flow
Spring Cloud Stream
Spring Cloud Stream App Starters
Spring Cloud for AWS
Spring Cloud for Cloud Foundry
Spring Cloud connectors
Spring Cloud Cloud Foundry Service Broker
Spring Cloud CLI
Spring Cloud Contract
Spring Cloud Task
Spring Cloud Task App Starters
Spring Cloud Starters
Spring Cloud Config
Spring Cloud Netflix
Spring Cloud Zookeeper
Spring Cloud Bus
Spring Cloud Cluster
Spring Cloud Consul
Spring Cloud Security
Spring Cloud Sleuth
microservices
data
PaaS
@spring_io
#springio17
•
–
–
•
•
•
•
•
@spring_io
#springio17
•
–
–
@spring_io
#springio17
•
–
•
–
–
•
@spring_io
#springio17
•
–
–
@spring_io
#springio17
Spring Cloud Data Flow
Spring Cloud Stream
Spring Cloud Stream App Starters
Spring Cloud for AWS
Spring Cloud for Cloud Foundry
Spring Cloud connectors
Spring Cloud Cloud Foundry Service Broker
Spring Cloud CLI
Spring Cloud Contract
Spring Cloud Task
Spring Cloud Task App Starters
Spring Cloud Starters
Spring Cloud Config
Spring Cloud Netflix
Spring Cloud Zookeeper
Spring Cloud Bus
Spring Cloud Cluster
Spring Cloud Consul
Spring Cloud Security
Spring Cloud Sleuth
microservices
data
PaaS
@spring_io
#springio17
•
–
•
•
•
–
–
@spring_io
#springio17
•
–
•
–
–
@spring_io
#springio17
Spring Shell
Spring Flo
Spring for Android
Spring StatemachineSpring Mobile
Spring XD
Spring Kafka
Spring AMQP
@spring_io
#springio17
Spring Kafka Spring AMQP
•
•
–
–
@spring_io
#springio17
Spring for
Android
Spring Mobile
@spring_io
#springio17
Spring Shell
Spring Flo
@spring_io
#springio17
Spring Statemachine
•
–
•
@spring_io
#springio17

The spring ecosystem in 50 min