Konfigurace pro Spring moduly
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čí Autowired anotace
- lze provádět přímo úpravu obsahu Spring kontextu modulu dle konfigurace - viz příklad s getConfigOverridableClasses a getOverridableConfigLocations
Zkopírovat odkaz na sekciPříklady
Ovlivnění kontextu modulu dle konfigurace
java
1 public class WebFeatureModule extends CpsGuiSpringModuleAbstract {2 @Override3 public SpringConfigurationClassItem[] getConfigOverridableClasses() {4 // ziskani konfigurace5 final RestWebFeatureModuleConfiguration config = getModuleConfiguration(RestWebFeatureModuleConfiguration.class);6 if (config.isRestApi()) {7 // pokud je povoleno rest api, doplneni Spring @Configuration beany8 return ArrayUtils.mergeArrays(9 new SpringConfigurationClassItem[] {10 new SpringConfigurationClassItem("restApi", RestWebFeatureModuleConfigurator.class)11 },12 super.getConfigOverridableClasses()13 );14 }15 else {16 super.getConfigOverridableClasses();17 }18 }19}
Obdobný příklad s použitím konfiguračních bean
java
1 public class UrlRewriteModule extends CpsSpringModuleAbstract {2 @Override3 protected SpringConfigurationItem[] getOverridableConfigLocations() {4 // ziskani konfigurace5 final UrlRewriteModuleConfig moduleConfig = getModuleConfiguration(UrlRewriteModuleConfig.class);6 // dle konfigurace sestavi kontext z danych XML7 final List<SpringConfigurationItem> items = new ArrayList<>();8 if(moduleConfig.isUrlHistoryOn()) {9 items.add(new SpringConfigurationItem("urlHistory-config", "classpath:META-INF/lib_urlRewrite/spring/urlHistory-config.xml"));10 }11 if(moduleConfig.isUserRedirectOn()) {12 items.add(new SpringConfigurationItem("userRedirect-config", "classpath:META-INF/lib_urlRewrite/spring/userRedirect-config.xml"));13 }14 return items.toArray(new SpringConfigurationItem[0]);15 }16}
Zkopírovat odkaz na sekciDoplň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á.
Zkopírovat odkaz na sekciPříklady
kombinace konfigurace
java
1 public class ServeRewriteRuleProvider implements RewriteRuleProviderRequiringHttpContext {2 3 // základní konfigurace4 @Autowired5 private ServeConfiguration configuration;6 7 // doplňková konfigurace - vhodné doplnit výchozí hodnotu8 @Value("${serve.rewrite.provider.priority:10000}")9 private Integer processingPriority;10 11 @Value("${serve.rewrite.staticRules:true}")12 private boolean staticRules;13 14 @Value("${serve.rewrite.dynamicRules:false}")15 private boolean dynamicRules;16 17 @Value("${serve.rewrite.langs.source:#{null}}")18 private String langSource;19 20}
v properties projektu (config/properties/settings-defaults.properties) je pak přímo uvedeno
text
1 serve.rewrite.provider.priority=80002serve.rewrite.staticRules=false3serve.rewrite.dynamicRules=true