Una forma de descubrir este tipo de cosas es echarle un vistazo. Este es un ejemplo de eclipse, pero debería funcionar de manera similar para otros IDEs:
Antes que nada, asegúrese de tener las fuentes de las bibliotecas de resortes que está utilizando. Esto es más fácil si usa maven, using the maven-eclipse-plugin o usando m2eclipse.
Luego, en Eclipse, seleccione Navigate -> Open Type...
. Ingrese el tipo que está buscando (algo como RequestMa*
debería hacer para los creadores de tipos perezosos como yo). Entrar/Aceptar. Ahora haga clic derecho en el nombre de la clase en el archivo fuente y seleccione References -> Project
. En la vista de búsqueda, aparecerán todos los usos de esta clase o anotación.
Uno de ellos es DefaultAnnotationHandlerMapping.determineUrlsForHandlerMethods(Class, boolean), donde este fragmento de código le dirá que el lenguaje de expresión no se evalúa:
ReflectionUtils.doWithMethods(currentHandlerType, new ReflectionUtils.MethodCallback() {
public void doWith(Method method) {
RequestMapping mapping = AnnotationUtils.findAnnotation(
method, RequestMapping.class);
if (mapping != null) {
String[] mappedPatterns = mapping.value();
if (mappedPatterns.length > 0) {
for (String mappedPattern : mappedPatterns) {
// this is where Expression Language would be parsed
// but it isn't, as you can see
if (!hasTypeLevelMapping && !mappedPattern.startsWith("/")) {
mappedPattern = "/" + mappedPattern;
}
addUrlsForPath(urls, mappedPattern);
}
}
else if (hasTypeLevelMapping) {
urls.add(null);
}
}
}
}, ReflectionUtils.USER_DECLARED_METHODS);
Recuerde, se llama Open Source. No tiene sentido utilizar el software de código abierto si no intenta comprender lo que está utilizando.
para aclarar, la expresión o juego funciona muy bien con la anotación @value para ajustar el valor de "RESOURCE_FOLDER", pero no va a trabajar en el @ Asignación de la solicitud Anotación – chrismarx