W mojej aplikacji Spring 3.0 mam pewne zasoby w /WEB-INF/dir
. W czasie wykonywania potrzebuję niektórych z nich jako InputStream
(lub innego typu). Jak mogę je odzyskać? Czy jest możliwe wstrzyknięcie ich jako normalnego Resource
?Wiosna 3.0 pliki do iniekcji jako zasoby
Odpowiedz
Oto najprostszy sposób to zrobić za pośrednictwem adnotacji:
import org.springframework.core.io.Resource;
@Value("classpath:<path to file>")
private Resource cert;
Powinieneś być w stanie używać:
Resource resource = appContext.getResource("classpath:<your resource name>");
InputStream is = resource.getInputStream();
gdzie appContext
to Wiosna ApplicationContext
(konkretnie, WebApplicationContext, ponieważ masz webapp)
Opcja ' Interfejs zasobów nie deklaruje metody 'getInputStream()', należy wywołać 'new FileInputStream (resource.getFile())'. –
To jest nieprawidłowe. 'Zasób' dziedziczy go z interfejsu' org.springframework.core.io.InputStreamSource' – Saket
Moje złe, przepraszam, nie widziałem "narzędzi". –
Jeśli nie chcą wprowadzić zależność na wiosnę , postępuj zgodnie z podejściem opisanym tutaj: Populate Spring Bean's File field via Annotation
Nie widzę, jak jedna z odpowiedzi na to pytanie skutkuje zmniejszoną zależnością od Spring ... –
Zgadzam się, że użycie @Value nie jest zależnością zerowej wiosny. –
Ale adnotacje to najlepszy sposób na uzyskanie wstrzyknięcia sprężyny bez naruszania zasady "nie-powtarzaj-siebie". Podejście XML, które polecasz, zmusza Cię do powtórzenia się. Prędzej czy później ktoś zmieni nazwę właściwości w pliku Java i zapomni zaktualizować plik definicji beli sprężystej. –
s Wszystkie są z definicji . Oznacza to, że są one w stanie rozdzielić wszystkie ciągi zasobów znalezione w ich konfiguracji. Mając to na uwadze, możesz zadeklarować swój cel za pomocą settera, który akceptuje org.springframework.core.io.Resource
. Następnie podczas konfigurowania komponentu bean celu należy użyć ścieżki zasobu w wartości właściwości. Spring spróbuje przekształcić wartość String
w konfiguracji na Resource
.
public class Target {
private Resource resource;
public void setResource(final Resource resource) {
this.resource = resource;
}
}
//configuration
<beans>
<bean id="target" class="Target">
<property name="resource" value="classpath:path/to/file"/>
</bean>
</beans>
Oto pełny przykład, aby pobrać zasób classpath. Używam go chwycić pliki SQL, które mają bardzo złożonych zapytań, które nie chcą, aby zapisać w klasach Javy:
public String getSqlFileContents(String fileName) {
StringBuffer sb = new StringBuffer();
try {
Resource resource = new ClassPathResource(fileName);
DataInputStream in = new DataInputStream(resource.getInputStream());
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
while ((strLine = br.readLine()) != null) {
sb.append(" " + strLine);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return sb.toString();
}
- 1. Brakujące pliki JAR Brakujące obrazy/pliki (zasoby)
- 2. Pliki Jpeg nie będą działały jako zasoby do rysowania - pliki PNG działają dobrze
- 3. Czy wiosna naprawdę nie wspiera w ogóle iniekcji interfejsu?
- 4. wiosna MVC: tag zasoby i 404 error
- 5. Wiosna MVC 3.0 i Apache Tiles 2
- 6. Zasoby są już zdefiniowane jako obiekty Zasoby
- 7. Wiosna 3.0 Bezpieczeństwo - Autoryzacja z uwierzytelnianiem
- 8. Wiosna 3.0 ORM z JPA 2.0 ClassCastException
- 9. Zastrzyk iniekcji Grails poza usługami?
- 10. Wiosna pliki konfiguracyjne i określające wersje schematu
- 11. Jak utworzyć dynamiczne powiązania w Guice, które wymagają iniekcji iniekcji?
- 12. Używanie czytnika Reader do iniekcji zależności
- 13. Mechanizm wiązania iniekcji automatycznej
- 14. zasoby Loading image jako RGB 565
- 15. Ocenianie wiosna @value adnotacji jako prymitywny logiczna
- 16. Dobre zasoby do nauki MacRuby
- 17. pliki wiosna XML i import plików XML okrężne zależności
- 18. Klasy wewnętrzne jako repozytorium danych wiosna
- 19. zasoby w META-INF/zasoby nie znalezione i zwrócone 404
- 20. Wiosna 3.0 MVC: Przekierowanie bez dodawania parametrów do mojego adresu URL
- 21. Zapobieganie iniekcji SQL w hibernacji
- 22. Spring Tomcat i zasoby statyczne i mvc: zasoby
- 23. Jak dodać zasoby biblioteczne do projektu Cordova?
- 24. Zasoby debugowania rails: prekompilacja: jak rozpoznać pliki naruszające prawa?
- 25. Biblioteki iniekcji zależnej od Rubiego
- 26. Wiosna 3 Bezpieczeństwo j_spring_security_check
- 27. Base SDK 3.0 do SDK 4.0
- 28. Dobre zasoby dodatku do MapPointa
- 29. Maven: Dołącz zasoby do JAR
- 30. zasoby do nauki dla mockito
To całkiem fajne! – Kong
Każdy pomysł, w jaki sposób można załadować katalog? E.g, katalog "dir", który zawiera 25 plików –
To całkiem fajne, ale może nie działać w pliku jar. –