Dobre pytanie.
Nie ma metody isRequst()
w BeanFactory
, ponieważ zakres żądania dotyczy tylko WWW.
Po prostu próbowałem znaleźć sposób, aby to zrobić i się nie udało. Mogę zaproponować Ci obejście, które zadziała, jeśli używasz adnotacji. Gdy pojawi się instancja komponentu bean, powiedz bean.getClass().getAnnotation(Scope.class)
. Jeśli to zwróci Scope
zadzwoń pod numer value()
.
To nie jest metoda "naukowa", ale mam nadzieję, że wystarczająco dobre dla ciebie.
EDYTOWANIE
Inne podejście jest następujące. Ziarna zasięgu żądania są przechowywane w atrybucie żądania. Nie pamiętam teraz jego nazwy, ale możesz łatwo znaleźć to sam, po prostu sprawdź swoją prośbę w debugerze. Następnie sprawdź, czy istnieje odniesienie do twojej fasoli. Ta metoda jest prawdopodobnie lepsza, ale wymaga pewnych wysiłków w celu zbadania atrybutu żądania i struktury danych używanych przez framework Spring.
To tylko przypuszczenie, ale ponieważ zwykły kod aplikacji nie powinien w ogóle wiedzieć o zakresach, są szanse, że te metody wewnętrzne są jedyną opcją. – biziclop
Nie musisz odkrywać go w czasie wykonywania. Jesteś projektantem aplikacji. Powinieneś *** już wiedzieć. – EJP
@EJP W moim przypadku, w miejscu, w którym muszę wiedzieć, nie mam. Gdybym wiedział, że nie zapytam. – Sandro