• in MethodInvocationProceedingJoinPoint use the same approach as in InjectionPoint.getAnnotations() to do only one volatile read for all calls after field initialization instead of two.
  • in AutowiredAnnotationBeanPostProcessor we are guareded by synchronized
  • AbstractCacheManager newly created LinkedHashSet always has some extra capacity, so calculation of it's size +1 is redundant