2016-07-21 11 views
-1

Federverschluß verkorkste: 1.4.0.RC1Frühling Bohnen aus Profile werden

Das Problem, das ich habe, ist, dass, wenn Sie einige @Bean Methoden in Ihrer Anwendung definiert sind, und Sie möchten die aus außer Kraft zu setzen Eine @Configuration mit einem Testprofil zum Beispiel @Profile("test") die Bohnen aus dem Testprofil wird nie geladen, es sei denn, Sie entfernen sie aus der App, dh das Standardprofil.

Ich stehe nicht unter, warum dies, so versaut ist, sicher sollte es irgendeine Art von Profil bevorzugt Laden sein?

Wie Standard Verwendung, es sei denn es Bohnen sind mit einem bestimmten Profil definiert, verwenden Sie dann diejenigen statt.

Wenn Sie @Component Annotationen mit Profilen verwenden, scheint es etwas zu funktionieren, wenn Sie @Primary in Verbindung mit der @Bean Annotation verwenden. Das scheint wie ein Hack.

Ich versuche, den Komponentenscan als Strategie zu entfernen, weil es schwierig zu verwalten ist, stattdessen erstellen wir Konfigurationsklassen für jedes Profil und wir haben einige Standardeinstellungen in der Anwendung, die überschrieben werden sollte

Jede Hilfe autowire Alptraum in Bezug auf Frühling wird

+1

Bitte zeigen Sie den Code Ihrer Konfiguration an. – Roman

Antwort

0

eine große Hilfe sein, da Sie 1.4.0.RC1, für das Testszenario verwenden, können Sie die neue mocking and spying beans Funktion wie ausprobieren:

@RunWith(SpringRunner.class) 
@SpringBootTest 
public class MyTest { 

    @MockBean 
    private RemoteService remoteService; 

    @Autowired 
    private Reverser reverser; 

    @Test 
    public void exampleTest() { 
     // RemoteService has been injected into the reverser bean 
     given(this.remoteService.someCall()).willReturn("mock"); 
     String reverse = reverser.reverseSomeCall(); 
     assertThat(reverse).isEqualTo("kcom"); 
    } 
} 

Eine bedingte test Profilkonfiguration Klasse, die eine Menge Testbeans enthält, ist keine gute Idee, und es ist schwierig, eine Verbindung zu dem Testfall selbst herzustellen.

Für andere Fälle als Test können Sie Ihren Standard und überschreibbar Bohnen wie initialisieren, was tat Frühling Stiefel. Konfigurieren Sie sie unter AutoConfiguration s, die normalerweise eine niedrigere Priorität als die Klasse haben und mit einer Bedingung wie z. B. @ConditionalOnMissingBean versehen sind.

Verwandte Themen