Wie werden bestimmte Handler mit einem @ControllerAdvice @ModelAttribute angesprochen?

Ich möchte 5 Minuten vor dem Herunterfahren des Systems eine Warnmeldung auf bestimmten Seiten anzeigen. Anstatt es manuell zu jeder dieser Seiten hinzuzufügen, habe ich eine @ ControllerAdvice-Klasse mit einer @ ModelAttribute-Methode erstellt, die die Nachricht zum Model-Parameter hinzufügt. Soweit ich weiß, werden jedoch die Dokumentation und SO sowie einige erste Tests dieses Model-Attributs hinzugefügt jede Methode mit einem @ RequestMapping.

Ich erkenne, dass ich meinen Code so umgestalten könnte, dass sich die anvisierten Methoden alle in einem Controller befinden, und den @ControllerAdvice auf diesen einen Controller beschränken könnte, aber ich würde am Ende eine Sammlung ansonsten nicht verwandter Methoden in diesem Controller haben, die den Gesamten durcheinander bringen Struktur meiner Controller.

Also, gibt es eine Möglichkeit anzugeben, auf welche spezifischen Methoden in mehreren Controllern das @ModelAttribute angewendet wird? Wäre eine benutzerdefinierte Anmerkung eine Lösung (nicht sicher, wie das funktionieren würde)? Ich möchte dies nach Möglichkeit über Anmerkungen tun.

Bearbeiten

Der @ControllerAdvice-Code ist ziemlich einfach:

@ControllerAdvice
public class GlobalModelController {

    private final Logger logger = LoggerFactory.getLogger(getClass());

    @Autowired
    private MaintenanceInterceptor maintInterceptor; 

    @ModelAttribute()
    public void globalAttributes(Model model, Locale locale) {
        if (maintInterceptor.isMaintenanceWindowSet() && !maintInterceptor.isMaintenanceInEffect()) {
            String msg = maintInterceptor.getImminentMaint(locale);
            model.addAttribute("warningMaint", msg);
            logger.debug("maint msg= " + msg);          
        }
    }
}

Antworten auf die Frage(4)

Ihre Antwort auf die Frage