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