When having a bean with a @Scheduled private method, the scheduled invocation when a pointcut exists for that method will succeed, but nothing will get injected into @Autowired fields. Setting other visibility for the method would solve it.
This is indeed a technical limitation: Private methods on CGLIB proxies cannot be overridden in the generated runtime subclass, so they'll end up in the CGLIB proxy instance itself, not delegated to the actual target bean. And that proxy instance appears 'empty' since it hasn't got any state itself... Calls should never end up in such an instance to begin with.
We are going to reject such scenarios with an IllegalStateException as of 4.1.2, and at least going to log a warning in 4.0.8 and 3.2.12.