Witam,
W kontrolerze mam metodę, w której zapisuje obiekt do sesji.

    @PostMapping("/ofertaBanku")
    public String displayBankOffer(Model model, @ModelAttribute("client") Client client, BindingResult bindingResult,
                                   HttpSession session) {
        if (bindingResult.hasErrors()) return BANK;

        long clientNumber = client.getClientNumber();
        Client user = userService.getClient(clientNumber);

        session.setAttribute("user", user);
        model.addAttribute("clientNumber", clientNumber);
        model.addAttribute("firstLogin", userService.checkFirstLogin(user));

        return BANK_OFFER;
    }

W innych metodach potrzebuje pobrać ten obiekt z sesji.

    @GetMapping("/mojeKonto")
    public String displayBankAccounts(Model model, @SessionAttribute("user") Client user, RedirectAttributes
            attributes) {
        setAccounts(model, user);
        model.addAttribute("creationDate", user.getCreationDate());
        model.addAttribute("clientNumber", user.getClientNumber());
        return MY_ACCOUNT;
    }

I to działa. Ale oprócz tego potrzebuję ustawić czas trwania sesji.
W pliku properties dodałem wpis.

server.session.timeout=60

Po tym jak minie czas sesji i program przejdzie do wybranej metody odczytującej obiekt z sesji, wyrzuca błąd.

Missing session attribute 'user' of type Client

W jaki sposób sprawdzić czy sesja wygasła przed wywołaniem danej metody ?
Wiem, że można to zrobić np. w taki sposób: https://stackoverflow.com/questions/1026846/how-to-redirect-to-login-page-when-session-is-expired-in-java-web-application ale szukam jeszcze innych alternatyw.

Edit: Rozwiązałem - inną alternatywą jest dopisanie w adnotacji parametru required, który poprzez ustawienie na false pozwoli nam przechwycić obiekt kiedy jest nullem. Wtedy sesja wygasła.

@SessionAttribute(value = "user", required = false)