Przypis [2] z linku:
[2]: Ponieważ przetwarzanie <import/>
elementów niekoniecznie występuje przed BeanFactoryPostProcessors są wywoływane, co oznacza, że nawet PropertyPlaceholderConfigurer nie mógł pomóc tutaj. Ponieważ środowisko i jego zestaw zasobów PropertySources są skonfigurowane przed odświeżeniem kontenera, elementy zastępcze w elementach mogą być rozwiązywane w środowisku bez żadnych problemów związanych z cyklem życia.
UPDATE:
Według javadoc for PropertySourcesPlaceholderConfigurer, PropertySourcesPlaceholderConfigurer
jest BeanFactoryPostProcessor
, więc co przypis naprawdę mówi to, że import został rozwiązany przed na PropertySourcesPlaceholderConfigurer jest zainstalowany, więc nie zadziała albo (w rzeczywistości, w czasie, gdy rozwiązano <import/>
, konfigurator może jeszcze nie istnieć!) Tak, po zainstalowaniu będzie wyglądał na Environment
, ale nie można go użyć do rozstrzygnięcia wewnątrz <import/>
, ponieważ w tym czasie nie postprocesory działają. A to obejmuje PropertySourcesPlaceholderConfigurer
.
Zasadniczo konfiguracja XML kontekst Wiosna idzie mniej więcej tak:
- Kontekst jest tworzony.
Environment
jest ustawiony.
- Odczytuje się XML (wszystkie XML, w razie potrzeby rozdzielając import). Definicje fasoli są tworzone.
BeanFactoryPostProcessor
s są instalowane i wywoływane, przetwarzanie definicji komponentów bean.
BeanPostProcessor
s są zainstalowane.
- Fasolki są tworzone zgodnie z definicjami fasoli. BeanPostProcessors są stosowane.
To jest podobny problem jak ten, który powoduje, że nie można użyć właściwości wielu postprocesorów order
zastosować BeanPostProccesor
przed BeanFactoryPostProcessor
(coś jak zarobić PropertyPlaceholderConfigurer
rozwiązywaniu zastępcze od A @PersistenceContext
): zachowanie jest zakodowane w kontekście aplikacji Spring, więc musisz obejść go, specjalizując się w niektórych wiosennych zajęciach.
Co stanie się, gdy spróbujesz? Błędy, nic, itp.? –
Tylko komunikat o błędzie "Nie udało się rozwiązać problemu zastępczego" login.security "". –