Spring 3.0 uygulamasında, /WEB-INF/dir
içinde bazı kaynaklara sahibim. Çalışma zamanında bunlardan bazılarına InputStream
(veya başka bir tür) olarak ihtiyacım var. Onları nasıl alabilirim? Bunları normal Resource
olarak enjekte etmek mümkün mü?Spring 3.0, dosyaları kaynak olarak sıkıştır
cevap
açıklama yoluyla bunu yapmak için bir kolay yolu: Ben Java sınıfları içinde saklamak istemiyorsanız gerçekten karmaşık sorgular sahip SQL dosyaları kapmak için kullanabilirsiniz
import org.springframework.core.io.Resource;
@Value("classpath:<path to file>")
private Resource cert;
Kullanılacak gerekir:
appContext
sizin Bahar
ApplicationContext
olduğunu
Resource resource = appContext.getResource("classpath:<your resource name>");
InputStream is = resource.getInputStream();
' Kaynak arabirimi 'getInputStream()' yöntemini bildirmez, yeni FileInputStream (resource.getFile()) 'işlevini çağırmanız gerekir. –
Bu yanlış. 'Kaynak', 'org.springframework.core.io.InputStreamSource' – Saket
arayüzünden miras alır. Kötü, üzgünüm,' implements 'görmedim. –
Eğer Spring bağımlılığını tanıtmak istemiyorsanız (özellikle, bir WebApplicationContext, bir webapp var çünkü) yaklaşım burada ayrıntılı izleyin: Populate Spring Bean's File field via Annotation
Bu soruya verilen yanıtlardan herhangi birinin Bahar'a bağımlılığın azalmasıyla sonuçlanamadığını göremiyorum ... –
@Value kullanımı sıfır yay bağımlılığı olmadığını kabul ediyorum. –
Ancak ek açıklamalar, tekrar etmeyiniz ilkesini ihlal etmeden yay enjeksiyonunu elde etmenin en iyi yoludur. Önereceğiniz XML yaklaşımı, kendinizi tekrar etmenize zorlar. Er ya da geç birileri java dosyasındaki özellik adını değiştirecek ve baharlık fasülye tanımlama dosyasını güncellemeyi unutmayacak. –
Tüm ApplicationContext
s, tanımı gereği, ResourceLoader
ler vardır. Bu, yapılandırmalarında bulunan herhangi bir kaynak dizgisini çözebilecekleri anlamına gelir. Bunu göz önünde bulundurarak, hedef çekirdeğinizi bir org.springframework.core.io.Resource
kabul eden bir düzenleyici ile bildirebilirsiniz. Daha sonra, hedef çekirdeği yapılandırırken, yalnızca özellik değerinde bir kaynak yolu kullanın. Spring, yapılandırmanızda bulunan String
değerini Resource
'a dönüştürmeyi deneyecektir.
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>
Burada bir sınıf yolu kaynağını almak için tam bir örnek var.
İştepublic 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. Yayınla html ve css'yi otomatik olarak sıkıştır?
- 2. Spring & JNDI: kaynak platformunu bağımsız olarak bulun
- 3. Spring 3.0 ORM, JPA 2.0 ClassCastException ile
- 4. çoklu katran (kaynak dosyaları) dosyaları
- 5. NHibernate 3.0 kaynak deposu nerede?
- 6. Sıkıştır içerik
- 7. Erişilemez, Dahili, Kaynak Dosyaları?
- 8. Spring Security 3.0 Google Apps, OpenID4Java
- 9. Yinelenen Yerelleştirilmiş Kaynak Dosyaları
- 10. Servlet 3.0 Spring Java Yapılandırması JNDI
- 11. Spring 3.0 REST uygulaması veya Jersey?
- 12. Spring Security 3.0 araya girme emri
- 13. S3 üzerinde dosya sıkıştır
- 14. Symfony 3.0 - Kaynak yüklenemiyor "." - Özel Rota Yükleyici
- 15. Javascript'te kaynak dosyaları (.resx) kullanma
- 16. Sıkıştır HTTP GET Yanıtı
- 17. MySql veritabanı bağlantısı sıkıştır
- 18. NetBeans Nasıl Yapılır C++ olarak Kod .cpp Dosyaları Kaynak Kodu?
- 19. Visual Studio 2017'de yerleşik olarak kaynak dosyaları nasıl gömülür?
- 20. Android aroma ve kaynak dosyaları
- 21. Spring Oauth2 ayrı kaynak sunucu yapılandırması
- 22. Spring Security 3.0.x ile HTTP 403 nasıl kullanılır
- 23. Sunucuda jpeg'i PHP ile sıkıştır.
- 24. Tar dosyasını dizine sıkıştır Sıkıştırmayı
- 25. Sıkıştırılmış GZip dizgisini Java'da sıkıştır
- 26. Oturum açtıktan sonra bir çerez ayarlama Spring Security 3.0 oturumunda
- 27. vNext in derleme için kaynak dosyaları sürümü
- 28. Gömme Dosyaları ikili kaynak içinde görüntüle Kaynağı
- 29. Qt Creator derleme dizininde kaynak dosyaları dahil
- 30. Bir bash komut dosyasındaki kaynak dosyaları
Bu oldukça havalı! – Kong
Bir dizin nasıl yüklenebilir? E.g, 25 dosya –
içeren bir dizin "dir" Bu oldukça güzel ama kavanoz dosyası içinde çalışmayabilir. –