The reason why not dependency injection: 
These listener beans are only loaded when their profiles are active; but the containing bean BatchJobRegistryBeanPostProcessor should always be loaded.

The reason why name not by type:
There could be other listener beans of type "StepListener" or "JobExecutionListener" from the job module being loaded (from job module xml) file;