Czy istnieje sposób na załadowanie klasy oznaczonej @ConfigurationProperties
bez bezpośredniego kontekstu wiosennego? Zasadniczo chcę ponownie wykorzystać całą inteligentną logikę, którą wykonuje Spring, ale w przypadku komponentu bean, który ręcznie inicjuję poza cyklem życia Spring.Czy mogę ręcznie załadować @ConfigurationProperties bez Spring AppContext?
Mam fasoli, która ładuje się szczęśliwie na wiosnę (boot) i mogę wstrzyknąć to do moich innych ziaren Usługa:
@ConfigurationProperties(prefix="my")
public class MySettings {
String property1;
File property2;
}
Zobacz docco sprężyny, aby uzyskać więcej informacji http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/#boot-features-external-config-command-line-args
Ale teraz muszę aby uzyskać dostęp do tego komponentu bean z klasy utworzonej poza wiosną (przez Hibernate). Klasa jest tworzona na tak wczesnym etapie procesu uruchamiania aplikacji, że Spring Boot nie udostępnił jeszcze kontekstu aplikacji za pomocą klasycznych metod pomocniczych odnośnika lub statycznych referencji roll-my-own.
Więc zamiast chcą zrobić coś takiego:
MySettings mySettings = new MySettings();
SpringPropertyLoadingMagicClass loader = new SpringPropertyLoadingMagicClass();
loader.populatePropertyValues(mySettings);
I mieć MySettings skończyć ze wszystkimi jego wartości ładowanych z wiersza polecenia Właściwości systemu app.properties itp Czy jest jakaś klasa w Wiosna, która robi coś takiego, czy też wszystko jest zbyt przeplatane z kontekstem aplikacji?
Oczywiście mogłem po prostu załadować plik Właściwości sam, ale naprawdę chcę zachować logikę Spring Boot przy użyciu zmiennych wiersza poleceń (np. - my.property1 = xxx), lub zmiennych systemowych, application.properties lub nawet plik yaml, a także logika wokół luźnego powiązania i konwersji typów (np. właściwość 2 to plik), tak aby wszystko działało dokładnie tak samo, jak w kontekście wiosennym.
Możliwe czy marzenie?
Dzięki za pomoc!
Dziękujemy za szczegółową odpowiedź! To mi bardzo pomaga. – Rib47