Anotación de nivel de tipo Java y visibilidad de miembros privados

Estoy tratando de externalizar la base de un manantial.@Controller en una estáticaString miembro de la clase controladora. Si lo hago, tengo que declarar público al miembro; de lo contrario, no será visible para el@RequestMapping anotación. No entiendo por qué, ¿no es la anotación parte de la clase?

¿Alguien puede explicar por qué estoy obligado a no usar?private ¿aquí?

Inválido:

@Controller
@RequestMapping(PendingApprovalsController.CONTROLLER_URL)
public class PendingApprovalsController {
    private static final String CONTROLLER_URL = "/some/url";
        ...
}

Válido:

@Controller
@RequestMapping(PendingApprovalsController.CONTROLLER_URL)
public class PendingApprovalsController {
    public static final String CONTROLLER_URL = "/some/url";
        ...
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta