When using autowiring with fields, you can't assume ordering of spring building or injection the way your code does, because you're not telling Spring about any ordering. Since the launcher and messageSender methods are annotated with @Bean, Spring might call those methods to build those beans before it injects the customerRepository into the field.
One solution is what Stephane commented, specifying arguments to those bean building methods to force some ordering - Spring won't call the method until it can provide the parameters.
Another solution to guarantee ordering of bean creation, and what I generally use, is constructor injection - add the beans you want as parameters in a constructor, and put the @Autowired annotation on the constructor. I've been moving away from field and setter injection towards constructor injection because even though it's more verbose, that guaranteed ordering helps you avoid circular dependencies.