Frage

Wie kann ich nicht instantiate Spring Security, bis ich brauche?

Ich bin mit Google App Engine so die Startzeit meiner Web-App wichtig ist. Manchmal, wenn ein Benutzer eine Seite anfordert, müssen sie die ganze Zeit für meine Web-app instantiate warten, bevor sie eine Antwort zu erhalten (dies wird als eine Ladeanfrage).

Bestimmte Seiten meiner App erfordert keine Authentifizierung. Für diese Seiten, wenn die Anforderung eine Ladeanforderung ist, möchte ich nicht den Benutzer haben die zusätzlichen ~ 1,5 Sekunden für Spring Security instanziieren zu warten.

Ich habe bereits herausgefunden, wie zu faul Last alle anderen Bestandteile meiner app, ist Spring Security die einzige, die ich weiß nicht, wie. Wer eine Idee?

EDIT: Wenn jemand weiß, wie Spring Security von Code zu instanziiert statt application-security.xml verwendet, dann denke ich, dass ich herausfinden konnte, wie man faul Last it

.
War es hilfreich?

Lösung

Nun, ich es endlich herausgefunden. Ich musste Unterklasse org.springframework.web.context.ContextLoaderListener und org.springframework.web.filter.DelegatingFilterProxy nichts weiter zu tun, bis ich eine Activate-Methode auf sie nennen.

Andere Tipps

Der Hack beschrieben hier für mich gearbeitet:

... Sie dieses Problem mit jedem LazyInitTargetSource für die UserDetailsService lösen kann.

<bean id="userDetailsService" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="targetSource">
        <bean class="org.springframework.aop.target.LazyInitTargetSource">
            <property name="targetBeanName" value="targetUserDetailsService"/>
        </bean>
    </property>
</bean>

<bean id="targetUserDetailsService" class="MyCustomUserService" lazy-init="true">
    ....
</bean>

Sie können <url-pattern>s von Spring Security-Filter-Mapping in web.xml konfigurieren, dass nur die gesicherten Mittel bereitgestellt wird (sowie Login-Logout-Seiten und andere Ressourcen, die die Spring Security Verarbeitung erfordern), und wickeln Sie die Standardfilter mit Ihrem eigenen faul Wrapper, wie Sie mit DispatcherServlet getan hat.

EDIT: Das Problem scheint komplexer zu sein, als ich dachte. Sie können auch versuchen, Ihre Sicherheit xml als <beans default-lazy-init="true" ...> zu definieren

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top