Separate from where SpEL expressions for a module come from, the main concept to get across is that the relationship is symmetric,   Modules evaluate their own SpEL 'requirement' expression using the Container's attributes as the evaluation context and the Container evaluates its own SpEL 'requirement' expression using the Modules attributes as the evaluation context.  As a simple example of 'default' Module attributes, would be 'type', is it a stream or is it a job.  If a Container's SpEL expression says 'type==job' then it would evaluate to false when a Module's attributes would say 'type='stream'.