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