Konfigurace pro Spring moduly
Pro Spring moduly lze přímo využít základní možnosti konfigrace.
Platí že:
- konfigurační třídu lze získat přímo ze Spring komponent (ja dostupná v kontextu modulu), takže stačí
Autowiredanotace - lze provádět přímo úpravu obsahu Spring kontextu modulu dle konfigurace - viz příklad s
getConfigOverridableClassesagetOverridableConfigLocations
Příklady
Ovlivnění kontextu modulu dle konfigurace
java
public class WebFeatureModule extends CpsGuiSpringModuleAbstract { @Override public SpringConfigurationClassItem[] getConfigOverridableClasses() { // ziskani konfigurace final RestWebFeatureModuleConfiguration config = getModuleConfiguration(RestWebFeatureModuleConfiguration.class); if (config.isRestApi()) { // pokud je povoleno rest api, doplneni Spring @Configuration beany return ArrayUtils.mergeArrays( new SpringConfigurationClassItem[] { new SpringConfigurationClassItem("restApi", RestWebFeatureModuleConfigurator.class) }, super.getConfigOverridableClasses() ); } else { super.getConfigOverridableClasses(); } }}Obdobný příklad s použitím konfiguračních bean
java
public class UrlRewriteModule extends CpsSpringModuleAbstract { @Override protected SpringConfigurationItem[] getOverridableConfigLocations() { // ziskani konfigurace final UrlRewriteModuleConfig moduleConfig = getModuleConfiguration(UrlRewriteModuleConfig.class); // dle konfigurace sestavi kontext z danych XML final List<SpringConfigurationItem> items = new ArrayList<>(); if(moduleConfig.isUrlHistoryOn()) { items.add(new SpringConfigurationItem("urlHistory-config", "classpath:META-INF/lib_urlRewrite/spring/urlHistory-config.xml")); } if(moduleConfig.isUserRedirectOn()) { items.add(new SpringConfigurationItem("userRedirect-config", "classpath:META-INF/lib_urlRewrite/spring/userRedirect-config.xml")); } return items.toArray(new SpringConfigurationItem[0]); }}Doplňková konfigurace
Snadno lze provádět doplňkovou konfiguraci na základě nastavení projektu (properties) pomocí @Value.
Doplňková konfigurace se využívá spíše pro systémová nastavení, kde je předpoklad že řeší spíše vyjímečné požadavky. Vždy je nutné zvážit, zda plnohodnotná XML konfigurace přímo v modulu není vhodnější a lépe zdokumentovatelná.
Příklady
kombinace konfigurace
java
public class ServeRewriteRuleProvider implements RewriteRuleProviderRequiringHttpContext {
// základní konfigurace @Autowired private ServeConfiguration configuration;
// doplňková konfigurace - vhodné doplnit výchozí hodnotu @Value("${serve.rewrite.provider.priority:10000}") private Integer processingPriority;
@Value("${serve.rewrite.staticRules:true}") private boolean staticRules;
@Value("${serve.rewrite.dynamicRules:false}") private boolean dynamicRules;
@Value("${serve.rewrite.langs.source:#{null}}") private String langSource;
}v properties projektu (config/properties/settings-defaults.properties) je pak přímo uvedeno
text
serve.rewrite.provider.priority=8000serve.rewrite.staticRules=falseserve.rewrite.dynamicRules=true