Spring @Cacheable con clave SpEL: siempre se evalúa como nulo

Estoy teniendo un problema con @Cacheable y estoy usando una clave personalizada basada en el lenguaje de expresión Spring. Tengo el siguiente código

@Cacheable(value = "myCache", key = "#providerDTO.identifier")
ClientVO loadClientVOByProviderDTO(ProviderDTO providerDTO);

Esto es lanzar el siguiente error.

org.springframework.expression.spel.SpelEvaluation Exception: EL1007Epos 0): Field or property 'identifier' cannot be found on null

El argumento providerDTO no es nulo, lo he verificado muchas veces. Los documentos dicen que esto debería funcionar, así que estoy muy confundido. Los documentos dan el siguiente ejemplo.

@Cacheable(value="books", key="#isbn.rawNumber")

También lo he intentado con un método estático. Esto lanza una NullPointerException porque el providerDTO es nulo aquí.

public static String cacheKey(ProviderDTO providerDTO)                                                                                                                                                                                                                    
{                                                                                                                                                                                                                                                                         
    return providerDTO.identifier + "-" + providerDTO.clientID + "-" + providerDTO.clubID;                                                                                                                                                                            
}

¿Cómo puedo depurar esto para averiguar qué está pasando? Esta es la primavera 3.2.4-LIBERACIÓN. La etiqueta @Cacheable está en una interfaz, pero estoy usando AOP estándar de primavera y no AspectJ, por lo que tengo entendido, aún debería funcionar bien.

Respuestas a la pregunta(1)

Su respuesta a la pregunta