Buona domanda.
Non esiste alcun metodo isRequst()
in BeanFactory
perché l'ambito della richiesta è rilevante solo per il Web.
Ho appena cercato di trovare il modo di farlo e ho fallito. Quindi, posso suggerirti un work-around che funzioni se usi le annotazioni. Quando ottieni l'istanza di bean, dire bean.getClass().getAnnotation(Scope.class)
. Se questo restituisce Scope
chiama value()
.
Questo non è un metodo "scientifico", ma speriamo che sia abbastanza buono per voi.
EDIT
Altro approccio è il seguente. I bean scope di richiesta sono memorizzati nell'attributo di richiesta. Non ricordo il suo nome ora ma puoi trovarlo facilmente da solo, basta esaminare la tua richiesta nel debugger. Quindi controlla che ci sia riferimento al tuo bean. Questo metodo è probabilmente migliore ma richiede alcuni sforzi per indagare l'attributo della richiesta e la struttura dei dati utilizzati dal framework Spring.
Questa è solo un'ipotesi, ma dal momento che il normale codice di applicazione non dovrebbe conoscere gli ambiti, è probabile che quei metodi interni siano la tua unica opzione. – biziclop
Non dovrebbe essere necessario scoprirlo in fase di esecuzione. Sei il progettista dell'applicazione. Dovresti *** già sapere. – EJP
@EJP Nel mio caso, nel posto in cui ho bisogno di sapere, non lo so. Se avessi saputo che non avrei chiesto. – Sandro