2017-12-01 2 views
0

Ich habe eine große Spring-Anwendung, die ohne XML mit nur Anmerkungen eingerichtet wird. Ich habe einige Änderungen an dieser Anwendung vorgenommen und habe ein separates Projekt mit fast identischem Code. In diesem separaten Projekt scheint Togglz jedoch eine Art Standardkonfiguration anstelle der von mir eingerichteten TogglzConfig-Datei zu verwenden.Wenn meine Spring-App ausgeführt wird, verwendet sie nicht meine TogglzConfig-Datei

Das erste Zeichen, dass etwas nicht stimmte, war, als ich nicht auf die Toggz-Konsole zugreifen konnte. Ich bekomme einen 403-Verboten-Fehler, obwohl meine Konfiguration so eingestellt ist, dass sie jeder benutzen kann (wie auf der Togglz-Seite gezeigt). Ich machte dann einige Tests und versuchte, eine Liste der Eigenschaften zu sehen, und die Liste ist leer, wenn ich FeatureContext.getFeatureManager(). GetFeatures() trotz meiner Feature-Klasse nenne, die einige Eigenschaften enthalten hat. Deshalb denke ich, dass es eine Art Standard verwendet.

TogglzConfiguration.java

public enum Features implements Feature { 

    FEATURE1, 

    FEATURE2, 

    FEATURE3, 

    FEATURE4, 

    FEATURE5; 

    public boolean isActive() { 
    return FeatureContext.getFeatureManager().isActive(this); 
    } 
} 

TogglzConfiguration.java

@Component 
public class TogglzConfiguration implements TogglzConfig { 

    public Class<? extends Feature> getFeatureClass() { 
    return Features.class; 
    } 

    public StateRepository getStateRepository() { 
    File properties = [internal call to property file]; 
    try { 
     return new FileBasedStateRepository(properties); 
    } catch (Exception e) { 
     throw new TogglzConfigException("Error getting Togglz configuration from " + properties + ".", e); 
    } 
    } 

    @Override 
    public UserProvider getUserProvider() { 
    return new UserProvider() { 
     @Override 
     public FeatureUser getCurrentUser() { 
     return new SimpleFeatureUser("admin", true); 
     } 
    }; 
    } 
} 

SpringConfiguration.java

@EnableTransactionManagement 
@Configuration 
@ComponentScan(basePackages = { "root package for the entire project" }, excludeFilters = 
    @ComponentScan.Filter(type=FilterType.ANNOTATION, value=Controller.class)) 
public class SpringConfiguration { 

    @Bean 
    public TransformerFactory transformerFactory() { 
     return TransformerFactory.newInstance(); 
    } 

    @Bean 
    public DocumentBuilderFactory documentBuilderfactory() { 
     return DocumentBuilderFactory.newInstance(); 
    } 

    @Bean 
    public RestTemplate restTemplate() { 
     return new RestTemplate(); 
    } 
} 

Mein Projekt findet eine Reihe von anderen Bohnen mit der @Component Anmerkung eingerichtet. Ich weiß nicht, ob das Problem darin besteht, dass diese Komponente überhaupt nicht aufgenommen wird oder wenn Togglz sie aus irgendeinem Grund einfach nicht benutzt. Ich habe versucht, den Namen des FeatureManager zu drucken, der von FeatureContext.getFeaturemanager() zurückgegeben wird, und es ist FallbackTestFeatureManager, so scheint dies meinen Verdacht zu bestätigen, dass es nur meine Konfiguration überhaupt nicht verwendet.

Wer hat irgendwelche Ideen, was ich überprüfen kann? Ich habe keine Ideen mehr, vor allem, weil ich gerade mit einem fast vollständigen IntelliJ-Projekt an meiner Maschine arbeite. Ich kann einfach nicht herausfinden, was am Toggz-Setup oder den Spring-Konfigurationen anders ist. Vielen Dank im Voraus für Ihre Hilfe.

Antwort

0

Ich hatte endlich meinen Glühbirnenmoment und löste dieses Problem. Falls jemand anderes ein ähnliches Problem hat, scheint es mein Fehler gewesen zu sein, dass die Togglz-Tests und JUnit-Abhängigkeiten zu meinem Projekt hinzugefügt wurden, aber nicht auf den Testbereich beschränkt waren. Ich habe diesen Teil der Seite übersehen.

<!-- Togglz testing support --> 
<dependency> 
    <groupId>org.togglz</groupId> 
    <artifactId>togglz-testing</artifactId> 
    <version>2.5.0.Final</version> 
    <scope>test</scope> 
</dependency> 

Ohne diesen Bereich, gehe ich davon aus diesen der Togglz Konfiguration überschreiben I wurden mit einer Standard-Testkonfiguration erstellt und dass mein Problem verursacht wurde.

Verwandte Themen