53
Jeroen Sterken @jeroensterken

The spring ecosystem in 50 min

Embed Size (px)

Citation preview

Jeroen Sterken

@jeroensterken

@spring_io

#springio17

@jeroensterken

@spring_io

#springio17

@spring_io

#springio17

Related projects

Spring LDAPSpring Security OAuthSpring Security GrailsSpring Security SAMLSpring Security Kerberos

Modules (#20)

spring-aopspring-aspectsspring-beansspring-contextspring-context-supportspring-corespring-expressionspring-instrumentspring-instrument-tomcatspring-jdbc

spring-jmsspring-messagingspring-ormspring-oxmspring-testspring-txspring-webspring-webmvcspring-webmvc-portletspring-websocket

Umbrella project

Spring Cloud Config Spring Cloud ZookeeperSpring Cloud NetflixSpring Cloud BusSpring Cloud for CFSpring CF Service BrokerSpring Cloud for AWSSpring Cloud ClusterSpring Cloud ConsulSpring Cloud Security

Spring Cloud SleuthSpring Cloud Data FlowSpring Cloud Stream Spring Cloud Stream App StartersSpring Cloud TaskSpring Cloud Task App StartersSpring Cloud connectorsSpring Cloud StartersSpring Cloud CLISpring 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 platformSpring 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

IntegrationSpring Social

Cloud

Spring Cloud

@spring_io

#springio17

@spring_io

#springio17

@spring_io

#springio17

@spring_io

#springio17

Spring Data RedisSpring Data for Apache CassandraSpring Data for Apache SolrSpring Data Couchbase (community module)Spring Data Elasticsearch (community module)Spring Data Neo4j (community module)

Spring Data CommonsSpring Data JPASpring Data KeyValueSpring Data LDAPSpring Data MongoDBSpring Data GemfireSpring 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 dataRepositories/aggregates

Spring HATEOAShypermedia+ 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 CloudSpring Cloud data flowSpring XD

@spring_io

#springio17

@spring_io

#springio17

•Spring Cloud Data FlowSpring Cloud StreamSpring Cloud Stream App StartersSpring Cloud TaskSpring Cloud Task App StartersSpring Cloud for AWSSpring Cloud for Cloud FoundrySpring Cloud connectorsSpring Cloud Cloud Foundry Service BrokerSpring Cloud CLISpring Cloud Contract

Spring Cloud Starters Spring Cloud ConfigSpring Cloud NetflixSpring Cloud ZookeeperSpring Cloud BusSpring Cloud ClusterSpring Cloud ConsulSpring Cloud SecuritySpring 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

APIGateway

LOGAnalytics

MonitorAUTH

serviceCONFIGservice

ServiceDiscovery

Client

ZUUL EUREKA

Spring Cloud Config

Spring Cloud Security

Spring Cloud Netflix

Spring Cloud Netflix

HYSTERIX

Spring Cloud Zookeeper

Spring Cloud Starters Spring Cloud ConfigSpring Cloud NetflixSpring Cloud ZookeeperSpring Cloud BusSpring Cloud ClusterSpring Cloud ConsulSpring Cloud SecuritySpring 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

•CONFIGservice

Spring Cloud Config

@spring_io

#springio17

@spring_io

#springio17

@spring_io

#springio17

Spring Cloud Data FlowSpring Cloud StreamSpring Cloud Stream App StartersSpring Cloud for AWSSpring Cloud for Cloud FoundrySpring Cloud connectorsSpring Cloud Cloud Foundry Service BrokerSpring Cloud CLISpring Cloud ContractSpring Cloud TaskSpring Cloud Task App Starters

Spring Cloud Starters Spring Cloud ConfigSpring Cloud NetflixSpring Cloud ZookeeperSpring Cloud BusSpring Cloud ClusterSpring Cloud ConsulSpring Cloud SecuritySpring Cloud Sleuth

microservices

data

PaaS

@spring_io

#springio17

Source

Processingstep

Processingstep

monolith

SourceProcessing

stepProcessing

stepProcessing

step

Integration

Springbootapp

Springbootapp

Springbootapp

Springbootapp

Springbootapp

Processingstep

Destination

Destination

Spring Cloud Data FlowSpring Cloud StreamSpring Cloud Stream App StartersSpring Cloud TaskSpring Cloud Task App Starters

@spring_io

#springio17

@spring_io

#springio17

@spring_io

#springio17

@spring_io

#springio17

@spring_io

#springio17

Spring Cloud Data FlowSpring Cloud StreamSpring Cloud Stream App StartersSpring Cloud for AWSSpring Cloud for Cloud FoundrySpring Cloud connectorsSpring Cloud Cloud Foundry Service BrokerSpring Cloud CLISpring Cloud ContractSpring Cloud TaskSpring Cloud Task App Starters

Spring Cloud Starters Spring Cloud ConfigSpring Cloud NetflixSpring Cloud ZookeeperSpring Cloud BusSpring Cloud ClusterSpring Cloud ConsulSpring Cloud SecuritySpring Cloud Sleuth

microservices

data

PaaS

@spring_io

#springio17

@spring_io

#springio17

@spring_io

#springio17

@spring_io

#springio17

@spring_io

#springio17

Spring Cloud Data FlowSpring Cloud StreamSpring Cloud Stream App StartersSpring Cloud for AWSSpring Cloud for Cloud FoundrySpring Cloud connectorsSpring Cloud Cloud Foundry Service BrokerSpring Cloud CLISpring Cloud ContractSpring Cloud TaskSpring Cloud Task App Starters

Spring Cloud Starters Spring Cloud ConfigSpring Cloud NetflixSpring Cloud ZookeeperSpring Cloud BusSpring Cloud ClusterSpring Cloud ConsulSpring Cloud SecuritySpring 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