Configuration Options
Spring Cloud Stream supports general configuration options as well as configuration for bindings and binders. Some binders let additional binding properties support middleware-specific features.
Configuration options can be provided to Spring Cloud Stream applications through any mechanism supported by Spring Boot. This includes application arguments, environment variables, and YAML or .properties files.
| Note on using Spring/Boot core property annotations. |
Regardless whether you are dealing with a common property or binding/binder specific property, there may be times when you may need to rely on core Spring and Boot core property annotations such as @Value or @ConditionalOnProperty. For this cases make sure you specify
the full name of the property.
For example, given the current application.yaml
my:
prop: foo
spring:
application:
name: "messaging-test"
cloud:
function:
definition: "produce;consume"
stream:
binders:
rabbit:
environment:
my:
prop: bar
If you want to inject the value of the my.prop from the root using @Value annotation, you use (@Value("${my.prop}") String someProperty). And if you want the one specific to binder’s context, then you would specify
full property name (@Value(“${spring.cloud.stream.binders.rabbit.environment.my.prop}") String someProperty)
The same goes for @ConditionalOnProperty where you would effectively do the same.