Spring: Injektion der Ressource als InputStream in eine Factory-Methode

8

Ich möchte Anti-Samy von OWASP verwenden. Sie haben ein Richtlinienobjekt, das über eine Factory-Methode instanziiert wird.

%Vor%

Der InputStream, der an die Factory-Methode übergeben werden muss, stellt die Konfigurationsdatei für das Richtlinienobjekt dar.

Ist es möglich, eine Richtlinien-Bean in einer Spring XML Context Config zu erstellen? Ich weiß, dass es ein Ressource-Objekt gibt, das Dateien aus dem Klassenpfad laden kann. Aber was ich brauche ist, einen InputStream aus diesem Resource-Objekt zu machen. Kann ich das direkt im xml-spring-Kontext machen? Oder muss ich Java-Code schreiben, um den InputStream zu erhalten?

    
nebenmir 02.09.2010, 10:38
quelle

2 Antworten

15

Verwenden Sie den Factory-Methode-Ansatz zusammen mit einem Konstruktor-arg (der einem Factory-Methodenargument zugeordnet wird), und konvertieren Sie ihn automatisch aus einer Ressourcennotation in einen InputStream.

%Vor%

Sehen Sie sich die folgenden Teile des Spring an Referenz :

Sean Patrick Floyd 02.09.2010, 10:52
quelle
4

@ seanizers Lösung wäre eine gute Lösung, wenn Policy die InputStream nach dem Lesen geschlossen hätte, aber anscheinend nicht. Dies führt zu einem Leck, dessen Schwere davon abhängt, wie oft es aufgerufen wird, und die Art der Ressource.

Um sicherzugehen, sollten Sie schreibt stattdessen eine benutzerdefinierte FactoryBean -Implementierung , die das Öffnen und Schließen von InputStream sicher behandelt. Der FactoryBean würde mit einem Resource Objekt injiziert werden.

    
skaffman 02.09.2010 11:26
quelle

Tags und Links