Edee.one · Dokumentace

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

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