как инициализировать Spring Bean из базы данных - PullRequest
0 голосов
/ 28 мая 2010

привет, я использую Spring Security, и моя конфигурация находится в базе данных:

<sec:http auto-config="true" entry-point-ref="casProcessingFilterEntryPoint">
        <sec:remember-me />
        <sec:session-management>
            <sec:concurrency-control max-sessions="1"
                error-if-maximum-exceeded="true" />
        </sec:session-management>
        <sec:logout logout-success-url="${host.url}/logout/" />
        <sec:custom-filter ref="casAuthenticationFilter"
            after="CAS_FILTER" />
        <sec:custom-filter ref="filterInvocationInterceptor"
            before="FILTER_SECURITY_INTERCEPTOR" />
    </sec:http>

как ${host.url} в базе данных

как я могу инициализировать?

так, и я делаю это:

public class SnsPropertyResourceConfigurer  extends GrailsPlaceholderConfigurer{

    private BeanFactory beanFactory;

    protected void loadProperties(Properties props) throws IOException {
            setSystemPropertiesMode(2);
            ConfigObject config = ConfigurationHolder.getConfig();
            if(config != null) {
                props.putAll(config.toProperties());
            }
                Properties add = addProperties();
                if(add  != null){
                     props.putAll(add);

            }
        }

    private Properties addProperties(){

        InfoFetchClientRpcService infoFetchRpcService = (InfoFetchClientRpcService)beanFactory.getBean("infoFetchRpcService");
        Map<String, Application> apps = infoFetchRpcService.getAppInfo();
        Application thisApp = apps.get("sns");
        Application casApp = apps.get("cas");
        Properties props = new Properties();
        props.setProperty("cas.loginUrl", "11111111");
        props.setProperty("cas.logoutUrl", "222222222222");
        props.setProperty("cas.validator", casApp.getUrl());
        props.setProperty("cas.service",thisApp.getUrl()+"/j_spring_cas_security_check");
        props.setProperty("cas.defaultTargetUrl", thisApp.getSuccessUrl());
        props.setProperty("cas.defaultFailureUrl", thisApp.getFailureUrl());
        props.setProperty("cas.logout", thisApp.getLogoutUrl());
        props.setProperty("cas.logoutSuccessUrl", thisApp.getUrl());
        props.setProperty("cas.ticket.key", "sns");
        return props;
    }

    public void setBeanFactory(BeanFactory beanFactory) {
        this.beanFactory = beanFactory;
    }
}

и

<bean name="snsPropertyResourceConfigurer" class="com.ai.sns.init.SnsPropertyResourceConfigurer">
    </bean>

но это не влияет ...

Ответы [ 2 ]

2 голосов
/ 28 мая 2010

Подкласс PropertyPlaceholderConfigurer и осуществить загрузку из базы данных. Затем добавьте этот класс в виде компонента в applicationContext.xml (как если бы он был обычным PropertyPlaceholderConfigurer)

0 голосов
/ 29 мая 2010

я решаю эту проблему 。。。

я регистрирую placeholderConfigurer в основном контексте приложения где web-app/WEB-INF/applicationContext.xml но не grails-app/conf/spring/resources.xml хорошо работает

спасибо за каждого

цитата: http://jira.codehaus.org/browse/GRAILS-1958?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#issue-tabs

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...