Spring Cloud


Table of Contents

1. Features
I. Cloud Native Applications
2. Spring Cloud Context: Application Context Services
2.1. The Bootstrap Application Context
2.2. Application Context Hierarchies
2.3. Changing the Location of Bootstrap Properties
2.4. Overriding the Values of Remote Properties
2.5. Customizing the Bootstrap Configuration
2.6. Customizing the Bootstrap Property Sources
2.7. Logging Configuration
2.8. Environment Changes
2.9. Refresh Scope
2.10. Encryption and Decryption
2.11. Endpoints
3. Spring Cloud Commons: Common Abstractions
3.1. @EnableDiscoveryClient
3.1.1. Health Indicator
3.2. ServiceRegistry
3.2.1. ServiceRegistry Auto-Registration
3.2.2. Service Registry Actuator Endpoint
3.3. Spring RestTemplate as a Load Balancer Client
3.3.1. Retrying Failed Requests
3.4. Multiple RestTemplate objects
3.5. Ignore Network Interfaces
3.6. HTTP Client Factories
3.7. Spring Cloud Compatibility Verification
II. Spring Cloud Config
4. Quick Start
4.1. Client Side Usage
5. Spring Cloud Config Server
5.1. Environment Repository
5.1.1. Git Backend
Placeholders in Git URI
Pattern Matching and Multiple Repositories
Authentication
Authentication with AWS CodeCommit
Git SSH configuration using properties
Placeholders in Git Search Paths
Force pull in Git Repositories
Deleting untracked branches in Git Repositories
5.1.2. Version Control Backend Filesystem Use
5.1.3. File System Backend
5.1.4. Vault Backend
Multiple Properties Sources
5.1.5. Sharing Configuration With All Applications
File Based Repositories
Vault Server
5.1.6. JDBC Backend
5.1.7. Composite Environment Repositories
Custom Composite Environment Repositories
5.1.8. Property Overrides
5.2. Health Indicator
5.3. Security
5.4. Encryption and Decryption
5.5. Key Management
5.6. Creating a Key Store for Testing
5.7. Using Multiple Keys and Key Rotation
5.8. Serving Encrypted Properties
6. Serving Alternative Formats
7. Serving Plain Text
8. Embedding the Config Server
9. Push Notifications and Spring Cloud Bus
10. Spring Cloud Config Client
10.1. Config First Bootstrap
10.2. Discovery First Bootstrap
10.3. Config Client Fail Fast
10.4. Config Client Retry
10.5. Locating Remote Configuration Resources
10.6. Security
10.6.1. Health Indicator
10.6.2. Providing A Custom RestTemplate
10.6.3. Vault
10.7. Vault
10.7.1. Nested Keys In Vault
III. Spring Cloud Netflix
11. Service Discovery: Eureka Clients
11.1. How to Include Eureka Client
11.2. Registering with Eureka
11.3. Authenticating with the Eureka Server
11.4. Status Page and Health Indicator
11.5. Registering a Secure Application
11.6. Eureka’s Health Checks
11.7. Eureka Metadata for Instances and Clients
11.7.1. Using Eureka on Cloud Foundry
11.7.2. Using Eureka on AWS
11.7.3. Changing the Eureka Instance ID
11.8. Using the EurekaClient
11.8.1. EurekaClient without Jersey
11.9. Alternatives to the native Netflix EurekaClient
11.10. Why is it so Slow to Register a Service?
11.11. Zones
12. Service Discovery: Eureka Server
12.1. How to Include Eureka Server
12.2. How to Run a Eureka Server
12.3. High Availability, Zones and Regions
12.4. Standalone Mode
12.5. Peer Awareness
12.6. Prefer IP Address
13. Circuit Breaker: Hystrix Clients
13.1. How to Include Hystrix
13.2. Propagating the Security Context or using Spring Scopes
13.3. Health Indicator
13.4. Hystrix Metrics Stream
14. Circuit Breaker: Hystrix Dashboard
15. Hystrix Timeouts And Ribbon Clients
15.1. How to Include Hystrix Dashboard
15.2. Turbine
15.3. Turbine Stream
16. Client Side Load Balancer: Ribbon
16.1. How to Include Ribbon
16.2. Customizing the Ribbon Client
16.3. Customizing default for all Ribbon Clients
16.4. Customizing the Ribbon Client using properties
16.5. Using Ribbon with Eureka
16.6. Example: How to Use Ribbon Without Eureka
16.7. Example: Disable Eureka use in Ribbon
16.8. Using the Ribbon API Directly
16.9. Caching of Ribbon Configuration
16.10. How to Configure Hystrix thread pools
16.11. How to Provide a Key to Ribbon’s IRule
17. Declarative REST Client: Feign
17.1. How to Include Feign
17.2. Overriding Feign Defaults
17.3. Creating Feign Clients Manually
17.4. Feign Hystrix Support
17.5. Feign Hystrix Fallbacks
17.6. Feign and @Primary
17.7. Feign Inheritance Support
17.8. Feign request/response compression
17.9. Feign logging
18. External Configuration: Archaius
19. Router and Filter: Zuul
19.1. How to Include Zuul
19.2. Embedded Zuul Reverse Proxy
19.3. Zuul Http Client
19.4. Cookies and Sensitive Headers
19.5. Ignored Headers
19.6. Management Endpoints
19.6.1. Routes Endpoint
19.6.2. Filters Endpoint
19.7. Strangulation Patterns and Local Forwards
19.8. Uploading Files through Zuul
19.9. Query String Encoding
19.10. Plain Embedded Zuul
19.11. Disable Zuul Filters
19.12. Providing Hystrix Fallbacks For Routes
19.13. Zuul Timeouts
19.13.1. Service Discovery Configuration
19.13.2. URL Configuration
19.14. Rewriting Location header
19.15. Zuul Developer Guide
19.15.1. The Zuul Servlet
19.15.2. Zuul RequestContext
19.15.3. @EnableZuulProxy vs. @EnableZuulServer
19.15.4. @EnableZuulServer Filters
19.15.5. @EnableZuulProxy Filters
19.15.6. Custom Zuul Filter examples
19.15.7. How to Write a Pre Filter
19.15.8. How to Write a Route Filter
19.15.9. How to Write a Post Filter
19.15.10. How Zuul Errors Work
19.15.11. Zuul Eager Application Context Loading
20. Polyglot support with Sidecar
21. RxJava with Spring MVC
22. Metrics: Spectator, Servo, and Atlas
22.1. Dimensional vs. Hierarchical Metrics
22.2. Default Metrics Collection
22.3. Metrics Collection: Spectator
22.3.1. Spectator Counter
22.3.2. Spectator Timer
22.3.3. Spectator Gauge
22.3.4. Spectator Distribution Summaries
22.4. Metrics Collection: Servo
22.4.1. Creating Servo Monitors
22.5. Metrics Backend: Atlas
22.5.1. Global tags
22.5.2. Using Atlas
22.6. Retrying Failed Requests
22.6.1. BackOff Policies
22.6.2. Configuration
22.6.3. Zuul
23. HTTP Clients
IV. Spring Cloud Stream
24. Introducing Spring Cloud Stream
25. Main Concepts
25.1. Application Model
25.1.1. Fat JAR
25.2. The Binder Abstraction
25.3. Persistent Publish-Subscribe Support
25.4. Consumer Groups
25.4.1. Durability
25.5. Partitioning Support
26. Programming Model
26.1. Declaring and Binding Channels
26.1.1. Triggering Binding Via @EnableBinding
26.1.2. @Input and @Output
Customizing Channel Names
Source, Sink, and Processor
26.1.3. Accessing Bound Channels
Injecting the Bound Interfaces
Injecting Channels Directly
26.1.4. Producing and Consuming Messages
Native Spring Integration Support
Spring Integration Error Channel Support
Message Channel Binders and Error Channels
Using @StreamListener for Automatic Content Type Handling
Using @StreamListener for dispatching messages to multiple methods
26.1.5. Reactive Programming Support
Reactor-based handlers
RxJava 1.x support
Reactive Sources
26.1.6. Aggregation
Configuring aggregate application
Configuring binding service properties for non self contained aggregate application
27. Binders
27.1. Producers and Consumers
27.2. Binder SPI
27.3. Binder Detection
27.3.1. Classpath Detection
27.4. Multiple Binders on the Classpath
27.5. Connecting to Multiple Systems
27.6. Binder configuration properties
28. Configuration Options
28.1. Spring Cloud Stream Properties
28.2. Binding Properties
28.2.1. Properties for Use of Spring Cloud Stream
28.2.2. Consumer properties
28.2.3. Producer Properties
28.3. Using dynamically bound destinations
29. Content Type and Transformation
29.1. MIME types
29.2. MIME types and Java types
29.3. Customizing message conversion
29.4. @StreamListener and Message Conversion
30. Schema Evolution Support
30.1. Schema Registry Client
30.1.1. Schema Registry Client Properties
30.2. Avro Schema Registry Client Message Converters
30.2.1. Avro Schema Registry Message Converter Properties
30.3. Apache Avro Message Converters
30.4. Converters with Schema Support
30.5. Schema Registry Server
30.5.1. Schema Registry Server API
Registering a New Schema
Retrieving an Existing Schema by Subject, Format, and Version
Retrieving an Existing Schema by Subject and Format
Retrieving an Existing Schema by ID
Deleting a Schema by Subject, Format, and Version
Deleting a Schema by ID
Deleting a Schema by Subject
30.5.2. Using Confluent’s Schema Registry
30.6. Schema Registration and Resolution
30.6.1. Schema Registration Process (Serialization)
30.6.2. Schema Resolution Process (Deserialization)
31. Inter-Application Communication
31.1. Connecting Multiple Application Instances
31.2. Instance Index and Instance Count
31.3. Partitioning
31.3.1. Configuring Output Bindings for Partitioning
Spring-managed custom PartitionKeyExtractorClass implementations
Configuring Input Bindings for Partitioning
32. Testing
32.1. Disabling the test binder autoconfiguration
33. Health Indicator
34. Metrics Emitter
35. Samples
36. Getting Started
36.1. Deploying Stream applications on CloudFoundry
V. Binder Implementations
37. Apache Kafka Binder
37.1. Usage
37.2. Apache Kafka Binder Overview
37.3. Configuration Options
37.3.1. Kafka Binder Properties
37.3.2. Kafka Consumer Properties
37.3.3. Kafka Producer Properties
37.3.4. Usage examples
Example: Setting autoCommitOffset false and relying on manual acking.
Example: security configuration
Using the binder with Apache Kafka 0.10
Excluding Kafka broker jar from the classpath of the binder based application
37.4. Kafka Streams Binding Capabilities of Spring Cloud Stream
37.4.1. Usage example of high level streams DSL
37.4.2. Support for interactive queries
37.4.3. Kafka Streams properties
37.5. Error Channels
37.6. Kafka Metrics
37.7. Dead-Letter Topic Processing
38. RabbitMQ Binder
38.1. Usage
38.2. RabbitMQ Binder Overview
38.3. Configuration Options
38.3.1. RabbitMQ Binder Properties
38.3.2. RabbitMQ Consumer Properties
38.3.3. Rabbit Producer Properties
38.4. Retry With the RabbitMQ Binder
38.4.1. Overview
38.4.2. Putting it All Together
38.5. Error Channels
38.6. Dead-Letter Queue Processing
38.6.1. Non-Partitioned Destinations
38.6.2. Partitioned Destinations
republishToDlq=false
republishToDlq=true
VI. Spring Cloud Bus
39. Quick Start
40. Addressing an Instance
41. Addressing all instances of a service
42. Application Context ID must be unique
43. Customizing the Message Broker
44. Tracing Bus Events
45. Broadcasting Your Own Events
45.1. Registering events in custom packages
VII. Spring Cloud Sleuth
46. Introduction
46.1. Terminology
46.2. Purpose
46.2.1. Distributed tracing with Zipkin
46.2.2. Visualizing errors
46.2.3. Live examples
46.2.4. Log correlation
JSON Logback with Logstash
46.2.5. Propagating Span Context
Baggage vs. Span Tags
46.3. Adding to the project
46.3.1. Only Sleuth (log correlation)
46.3.2. Sleuth with Zipkin via HTTP
46.3.3. Sleuth with Zipkin via RabbitMQ or Kafka
47. Additional resources
48. Features
49. Sampling
50. Instrumentation
51. Span lifecycle
51.1. Creating and closing spans
51.2. Continuing spans
51.3. Creating spans with an explicit parent
52. Naming spans
52.1. @SpanName annotation
52.2. toString() method
53. Managing spans with annotations
53.1. Rationale
53.2. Creating new spans
53.3. Continuing spans
53.4. More advanced tag setting
53.4.1. Custom extractor
53.4.2. Resolving expressions for value
53.4.3. Using toString method
54. Customizations
54.1. Spring Integration
54.2. HTTP
54.3. Example
54.4. TraceFilter
54.5. Custom SA tag in Zipkin
54.6. Custom service name
54.7. Customization of reported spans
54.8. Host locator
55. Sending spans to Zipkin
56. Span Data as Messages
56.1. Zipkin Consumer
56.2. Custom Consumer
57. Metrics
58. Integrations
58.1. Runnable and Callable
58.2. Hystrix
58.2.1. Custom Concurrency Strategy
58.2.2. Manual Command setting
58.3. RxJava
58.4. HTTP integration
58.4.1. HTTP Filter
58.4.2. HandlerInterceptor
58.4.3. Async Servlet support
58.5. HTTP client integration
58.5.1. Synchronous Rest Template
58.5.2. Asynchronous Rest Template
Multiple Asynchronous Rest Templates
58.5.3. Traverson
58.6. Feign
58.7. Asynchronous communication
58.7.1. @Async annotated methods
58.7.2. @Scheduled annotated methods
58.7.3. Executor, ExecutorService and ScheduledExecutorService
Customization of Executors
58.8. Messaging
58.9. Zuul
58.10. Spring Cloud Function
59. Running examples
VIII. Spring Cloud Consul
60. Install Consul
61. Consul Agent
62. Service Discovery with Consul
62.1. How to activate
62.2. Registering with Consul
62.3. HTTP Health Check
62.3.1. Metadata and Consul tags
62.3.2. Making the Consul Instance ID Unique
62.4. Looking up services
62.4.1. Using Ribbon
62.4.2. Using the DiscoveryClient
63. Distributed Configuration with Consul
63.1. How to activate
63.2. Customizing
63.3. Config Watch
63.4. YAML or Properties with Config
63.5. git2consul with Config
63.6. Fail Fast
64. Consul Retry
65. Spring Cloud Bus with Consul
65.1. How to activate
66. Circuit Breaker with Hystrix
67. Hystrix metrics aggregation with Turbine and Consul
IX. Spring Cloud Zookeeper
68. Install Zookeeper
69. Service Discovery with Zookeeper
69.1. How to activate
69.2. Registering with Zookeeper
69.3. Using the DiscoveryClient
70. Using Spring Cloud Zookeeper with Spring Cloud Netflix Components
70.1. Ribbon with Zookeeper
71. Spring Cloud Zookeeper and Service Registry
71.1. Instance Status
72. Zookeeper Dependencies
72.1. Using the Zookeeper Dependencies
72.2. How to activate Zookeeper Dependencies
72.3. Setting up Zookeeper Dependencies
72.3.1. Aliases
72.3.2. Path
72.3.3. Load balancer type
72.3.4. Content-Type template and version
72.3.5. Default headers
72.3.6. Obligatory dependencies
72.3.7. Stubs
72.4. Configuring Spring Cloud Zookeeper Dependencies
73. Spring Cloud Zookeeper Dependency Watcher
73.1. How to activate
73.2. Registering a listener
73.3. Presence Checker
74. Distributed Configuration with Zookeeper
74.1. How to activate
74.2. Customizing
74.3. ACLs
X. Spring Boot Cloud CLI
75. Installation
76. Running Spring Cloud Services in Development
76.1. Adding Additional Applications
77. Writing Groovy Scripts and Running Applications
78. Encryption and Decryption
XI. Spring Cloud Security
79. Quickstart
79.1. OAuth2 Single Sign On
79.2. OAuth2 Protected Resource
80. More Detail
80.1. Single Sign On
80.2. Token Relay
80.2.1. Client Token Relay
80.2.2. Client Token Relay in Zuul Proxy
80.2.3. Resource Server Token Relay
81. Configuring Authentication Downstream of a Zuul Proxy
XII. Spring Cloud for Cloud Foundry
82. Discovery
83. Single Sign On
XIII. Spring Cloud Contract
84. Spring Cloud Contract
85. Spring Cloud Contract Verifier Introduction
85.1. Why a Contract Verifier?
85.1.1. Testing issues
85.2. Purposes
85.3. How It Works
85.3.1. Defining the contract
85.3.2. Client Side
85.3.3. Server Side
85.4. Step-by-step Guide to Consumer Driven Contracts (CDC)
85.4.1. Technical note
85.4.2. Consumer side (Loan Issuance)
85.4.3. Producer side (Fraud Detection server)
85.4.4. Consumer Side (Loan Issuance) Final Step
85.5. Dependencies
85.6. Additional Links
85.6.1. Spring Cloud Contract video
85.6.2. Readings
85.7. Samples
86. Spring Cloud Contract FAQ
86.1. Why use Spring Cloud Contract Verifier and not X ?
86.2. I don’t want to write a contract in Groovy!
86.3. What is this value(consumer(), producer()) ?
86.4. How to do Stubs versioning?
86.4.1. API Versioning
86.4.2. JAR versioning
86.4.3. Dev or prod stubs
86.5. Common repo with contracts
86.5.1. Repo structure
86.5.2. Workflow
86.5.3. Consumer
86.5.4. Producer
86.6. Can I have multiple base classes for tests?
86.7. How can I debug the request/response being sent by the generated tests client?
86.7.1. How can I debug the mapping/request/response being sent by WireMock?
86.7.2. How can I see what got registered in the HTTP server stub?
86.7.3. Can I reference the request from the response?
86.7.4. Can I reference text from file?
87. Spring Cloud Contract Verifier Setup
87.1. Gradle Project
87.1.1. Prerequisites
87.1.2. Add Gradle Plugin with Dependencies
87.1.3. Gradle and Rest Assured 2.0
87.1.4. Snapshot Versions for Gradle
87.1.5. Add stubs
87.1.6. Run the Plugin
87.1.7. Default Setup
87.1.8. Configure Plugin
87.1.9. Configuration Options
87.1.10. Single Base Class for All Tests
87.1.11. Different Base Classes for Contracts
87.1.12. Invoking Generated Tests
87.1.13. Spring Cloud Contract Verifier on the Consumer Side
87.2. Maven Project
87.2.1. Add maven plugin
87.2.2. Maven and Rest Assured 2.0
87.2.3. Snapshot versions for Maven
87.2.4. Add stubs
87.2.5. Run plugin
87.2.6. Configure plugin
87.2.7. Configuration Options
87.2.8. Single Base Class for All Tests
87.2.9. Different base classes for contracts
87.2.10. Invoking generated tests
87.2.11. Maven Plugin and STS
87.3. Stubs and Transitive Dependencies
87.4. CI Server setup
87.5. Scenarios
87.6. Docker Project
87.6.1. Short intro to Maven, JARs and Binary storage
87.6.2. How it works
Environment Variables
87.6.3. Example of usage
87.6.4. Server side (nodejs)
88. Spring Cloud Contract Verifier Messaging
88.1. Integrations
88.2. Manual Integration Testing
88.3. Publisher-Side Test Generation
88.3.1. Scenario 1: No Input Message
88.3.2. Scenario 2: Output Triggered by Input
88.3.3. Scenario 3: No Output Message
88.4. Consumer Stub Generation
89. Spring Cloud Contract Stub Runner
89.1. Snapshot versions
89.2. Publishing Stubs as JARs
89.3. Stub Runner Core
89.3.1. Retrieving stubs
Stub downloading
Classpath scanning
89.3.2. Running stubs
Running using main app
HTTP Stubs
Viewing registered mappings
Messaging Stubs
89.4. Stub Runner JUnit Rule
89.4.1. Maven settings
89.4.2. Providing fixed ports
89.4.3. Fluent API
89.4.4. Stub Runner with Spring
89.5. Stub Runner Spring Cloud
89.5.1. Stubbing Service Discovery
Test profiles and service discovery
89.5.2. Additional Configuration
89.6. Stub Runner Boot Application
89.6.1. How to use it?
Stub Runner Server
Stub Runner Server Fat Jar
Spring Cloud CLI
89.6.2. Endpoints
HTTP
Messaging
89.6.3. Example
89.6.4. Stub Runner Boot with Service Discovery
89.7. Stubs Per Consumer
89.8. Common
89.8.1. Common Properties for JUnit and Spring
89.8.2. Stub Runner Stubs IDs
89.9. Stub Runner Docker
89.9.1. How to use it
89.9.2. Example of client side usage in a non JVM project
90. Stub Runner for Messaging
90.1. Stub triggering
90.1.1. Trigger by Label
90.1.2. Trigger by Group and Artifact Ids
90.1.3. Trigger by Artifact Ids
90.1.4. Trigger All Messages
90.2. Stub Runner Camel
90.2.1. Adding the Runner to the Project
90.2.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
90.3. Stub Runner Integration
90.3.1. Adding the Runner to the Project
90.3.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
90.4. Stub Runner Stream
90.4.1. Adding the Runner to the Project
90.4.2. Disabling the functionality
Scenario 1 (no input message)
Scenario 2 (output triggered by input)
Scenario 3 (input with no output)
90.5. Stub Runner Spring AMQP
90.5.1. Adding the Runner to the Project
Triggering the message
Spring AMQP Test Configuration
91. Contract DSL
91.1. Limitations
91.2. Common Top-Level elements
91.2.1. Description
91.2.2. Name
91.2.3. Ignoring Contracts
91.2.4. Passing Values from Files
91.2.5. HTTP Top-Level Elements
91.3. Request
91.4. Response
91.5. Dynamic properties
91.5.1. Dynamic properties inside the body
91.5.2. Regular expressions
91.5.3. Passing Optional Parameters
91.5.4. Executing Custom Methods on the Server Side
91.5.5. Referencing the Request from the Response
91.5.6. Registering Your Own WireMock Extension
91.5.7. Dynamic Properties in the Matchers Sections
91.6. JAX-RS Support
91.7. Async Support
91.8. Working with Context Paths
91.9. Messaging Top-Level Elements
91.9.1. Output Triggered by a Method
91.9.2. Output Triggered by a Message
91.9.3. Consumer/Producer
91.9.4. Common
91.10. Multiple Contracts in One File
92. Customization
92.1. Extending the DSL
92.1.1. Common JAR
92.1.2. Adding the Dependency to the Project
92.1.3. Test the Dependency in the Project’s Dependencies
92.1.4. Test a Dependency in the Plugin’s Dependencies
92.1.5. Referencing classes in DSLs
93. Using the Pluggable Architecture
93.1. Custom Contract Converter
93.1.1. Pact Converter
93.1.2. Pact Contract
93.1.3. Pact for Producers
93.1.4. Pact for Consumers
93.2. Using the Custom Test Generator
93.3. Using the Custom Stub Generator
93.4. Using the Custom Stub Runner
93.5. Using the Custom Stub Downloader
94. Spring Cloud Contract WireMock
94.1. Registering Stubs Automatically
94.2. Using Files to Specify the Stub Bodies
94.3. Alternative: Using JUnit Rules
94.4. Relaxed SSL Validation for Rest Template
94.5. WireMock and Spring MVC Mocks
94.6. Customization of WireMock configuration
94.7. Generating Stubs using REST Docs
94.8. Generating Contracts by Using REST Docs
95. Migrations
95.1. 1.0.x → 1.1.x
95.1.1. New structure of generated stubs
95.2. 1.1.x → 1.2.x
95.2.1. Custom HttpServerStub
95.2.2. New packages for generated tests
95.2.3. New Methods in TemplateProcessor
95.2.4. RestAssured 3.0
96. Links
XIV. Spring Cloud Vault
97. Quick Start
98. Client Side Usage
98.1. Authentication
99. Authentication methods
99.1. Token authentication
99.2. AppId authentication
99.2.1. Custom UserId
99.3. AppRole authentication
99.4. AWS-EC2 authentication
99.5. AWS-IAM authentication
99.6. TLS certificate authentication
99.7. Cubbyhole authentication
99.8. Kubernetes authentication
100. Secret Backends
100.1. Generic Backend
100.2. Consul
100.3. RabbitMQ
100.4. AWS
101. Database backends
101.1. Apache Cassandra
101.2. MongoDB
101.3. MySQL
101.4. PostgreSQL
102. Configure PropertySourceLocator behavior
103. Service Registry Configuration
104. Vault Client Fail Fast
105. Vault Client SSL configuration
106. Lease lifecycle management (renewal and revocation)
XV. Spring Cloud Function
107. Introduction
108. Getting Started
109. Building and Running a Function
110. Function Catalog and Flexible Function Signatures
111. Standalone Web Applications
112. Standalone Streaming Applications
113. Deploying a Packaged Function
114. Dynamic Compilation
115. Serverless Platform Adapters
115.1. AWS Lambda
115.1.1. Introduction
115.1.2. Notes on JAR Layout
115.1.3. Upload
115.1.4. Platfom Specific Features
HTTP and API Gateway
115.2. Azure Functions
115.2.1. Notes on JAR Layout
115.2.2. JSON Configuration
115.2.3. Build
115.2.4. Running the sample
115.3. Apache Openwhisk
115.3.1. Quick Start
XVI. Appendix: Compendium of Configuration Properties