Ich mache eine Spring-Boot-App, die grundlegende Authentifizierung oder Oauth2 abhängig von einer Eigenschaft, die ich definiert haben muss.Lade Konfiguration Bean dynamisch
Das Problem ist, dass, wenn ich zwei Klassen mit @ Konfiguration erstellt die Anwendung nicht startet, und wenn ich nur eins und in der Configure-Methode ich ein hinzufügen, um das HttpSecurity-Objekt zu konfigurieren, scheitert ich, wenn Sie versuchen, die zu treffen Endpunkt mit Standardauthentifizierung.
Ich versuche bean registrieren dynamisch auf diese Weise:
@Bean
public ResourceServerSecurityConfig oauthConfig(){
if(isOauthEnabled){
return new ResourceServerSecurityConfig();
}else{
return null;
}
}
@Bean
public BasicSecurityConfig basicConfig(){
if(isOauthEnabled){
return new BasicSecurityConfig();
}else{
return null;
}
}
Aber die Konfiguration nicht geladen wird. Irgendwelche Hinweise, wie dies archiviert werden kann ??
Die "@ Conditional" Arbeit! so in etwa. Es lädt die Bean abhängig von einem Wert. Das Problem, das ich jetzt habe, ist, dass ich eine Klasse erstellt habe, die die Condition-Schnittstelle implementiert, aber diese Klasse lädt nicht den "@Value" aus der Eigenschaftendatei. Ich habe versucht, die Klasse mit einer "@Component" annotieren, weil für "@ value" die Klasse sollte eine Bean sein, aber ich kann nicht finden, warum der Wert nicht geladen wird. Wie auch immer, ich habe deine Antwort als die richtige markiert, weil das das ursprüngliche Problem gelöst hat;). Vielen Dank! – aruiz
Finden Sie die Lösung für das letzte Problem. Mit dem ConditionContext aus der Match-Methode konnte ich die Eigenschaften aus der Datei lesen. weil als [link] (http://stackoverflow.com/questions/25276463/how-get-working-value-or-vironment-in-a-class-implementing-the-condition-conf) sagt "Frühling dauert Der von Ihnen angegebene Klassentyp wird instanziiert und instanziiert, um die Übereinstimmungs-Methode zu verwenden. Die Instanz wird nicht als Bean betrachtet, sie führt kein Autowiring oder eine @Value-Verarbeitung durch. Dies gilt auch für BeanFactoryPostProcessor . " – aruiz