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.