Since we are creating a SpEL expression that relies upon dot notation to access the name from the Map of MessageHeaders, if a name containing a hyphen is passed via @Header("foo-bar"), it will not create a valid expression (e.g. headers.foo-bar). We probably need to use the headers['foo-bar'] format at all times. The problem with that is that the current implementation is relying upon SpEL's failure via dot-notation property resolution for throwing the Exception when a "required" header is missing. That is probably not the ideal way to drive those errors however. Ideally, we should find a solution that addresses both issues without affecting any of the currently functioning behavior.